【问题标题】:seaborn barplot add xticks for hueseaborn barplot 为色调添加 xticks
【发布时间】:2019-10-07 10:07:14
【问题描述】:

Seaborn 条形图对沿 x 坐标的每个唯一值都有一个 xtick。但是对于色调值,没有刻度:

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")

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

【问题讨论】:

  • 色相值是传说,那么为什么你还需要它作为 x-ticks?您可以将调色板传递给不太相似的颜色。
  • 颜色编码用于各种可视化,需要保持一致。在这个特定的情节中,颜色非常相似,特别是如果有人应该以灰度打印出来。
  • 这是所有彩色图表的挑战!重复的图例和 x 轴可能会使图形读者感到困惑。也许删除多余的图例。
  • 嗯,调色板已经建立,有点像品牌。虽然你是对的,添加 xticks 使这个情节的传说变得多余,但它仍然有助于重申整体品牌。它教给用户我们的配色方案:)

标签: python python-3.x matplotlib seaborn


【解决方案1】:

您必须注意数据集中可能包含的色调数量以及类别数量等。 如果您有 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'])

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 2023-01-26
    • 2020-06-27
    • 2020-09-12
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    相关资源
    最近更新 更多