【发布时间】:2022-01-12 02:27:28
【问题描述】:
我正在使用 Seaborn 在 Python 中创建条形图。 我有一个 2(注意力:分散与专注)X 3(解决方案:1、2、3)设计。 对于划分,我希望条形颜色为深红色、深绿色、深蓝色。 为了集中注意力,我希望条形颜色为红色、绿色、蓝色。
此代码不起作用,因为调色板仅适用于 hue 参数:
import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('attention')
palette = ["darkred", "red", "darkgreen", "green", "darkblue", "blue"]
palette = ["darkred", "darkgreen", "darkblue", "red", "green", "blue"]
sns.set(style='ticks', context='notebook', font_scale=1.2)
fig, ax = plt.subplots(figsize=(7, 5), dpi=96)
my_plot = sns.barplot(x="solutions", y="score", hue="attention",
palette=palette, capsize=.1, ax=ax, data=data)
plt.show()
这段代码几乎有效:
import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('attention')
sns.set(style='ticks', context='notebook', font_scale=1.5)
fig, ax = plt.subplots(figsize=(7, 5), dpi=96)
sns.barplot(x="solutions", y="score",
palette=['red', 'green', 'blue'], capsize=.1, ax=ax,
data=data.query('attention=="focused"'))
sns.barplot(x="solutions", y="score",
palette=['darkred', 'darkgreen', 'darkblue'], capsize=.1, ax=ax,
data=data.query('attention=="divided"'))
sns.despine(top=True, right=True)
plt.tight_layout()
plt.show()
但有两个问题:
- 无图例
- 条没有分开。
必须(应该?)以一种优雅的方式用 seaborn 创造这个人物。第一种方法是理想的:使用指定图形的参数一次调用 barplot。第二种方法没问题:多次调用 barplot。理想的租赁方法是直接调用 matplotlib bar(),但在这一点上,我会满足于任何导致所需数字的方法。
请注意,据我所知,这些名称相似的问题似乎并未解决此问题所寻求的结果:
【问题讨论】:
标签: python matplotlib seaborn