Seaborn柱状图中为hue添加xticks

4

Seaborn条形图在横坐标上每个唯一值都有一个刻度线。但对于色调值,没有刻度线:

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame(columns=["model", "time", "value"])
df["model"] = ["on"]*2 + ["off"]*2
df["time"] = ["short", "long"] * 2
df["value"] = [1, 10, 2, 4]

fig, ax = plt.subplots()
bar = sns.barplot(data=df, x="model", hue="time", y="value", edgecolor="white")

条形图

是否可以为色调添加刻度? 一些色调颜色非常相似,我想添加文字描述。


1
色调值是图例,那么为什么还需要它作为x轴刻度?您可以传递颜色调色板以获取不太相似的颜色。 - Parfait
颜色编码在各种可视化中被广泛使用,需要保持一致性。在这个特定的图表中,颜色非常相似,尤其是如果有人将它们打印成灰度。 - lhk
1
这是所有彩色图形的挑战!重复的图例和x轴可能会让读者感到困惑。也许可以删除多余的图例。 - Parfait
嗯,调色板已经确定了,有点像品牌标志。虽然你是对的,为这个图添加xticks会使图例变得多余,但它仍然有助于强调整体品牌形象。它向用户展示我们的颜色方案 :) - lhk
1个回答

6

在处理数据集时,需要注意颜色数量和类别数量等因素。如果有N个类别,则它们分别在坐标轴0、1、...、N-1处绘制。然后,各种颜色会以这些坐标为中心进行绘制。对于像您的示例中的2种颜色,条形图位于x±0.2处。

fig, ax = plt.subplots()
bar = sns.barplot(data=df, x="model", hue="time", y="value", edgecolor="white")
ax.set_xticks([-0.2,0.2, 0.8,1.2])
ax.set_xticklabels(["on/short","on/long",'off/short','off/long'])

enter image description here

请注意,在调用barplot()时,我强烈建议您使用 order =hue_order =,以确保您的标签与条形图匹配。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接