seaborn violinplots:更改小提琴颜色、轴名称、图例
seaborn violinplots: change violin color, axes names, legend
在我最近发现 seaborn
之前,我曾经使用 matplotlib
创建我所有的地块。我发现特别有趣的是,它允许您拆分小提琴以比较给定的 hue
变量。
嗯,我的主要问题是我不知道我必须修改什么才能更改 小提琴颜色、轴名称,或将图例放在我想要的地方。
这是我从 seaborn
:
中得到的例子
import seaborn as sns
tips = sns.load_dataset("tips")
sns.set(style="ticks", palette="colorblind")
g = sns.FacetGrid(tips, col="time", size=4, aspect=.75)
g = g.map(sns.violinplot, "sex", "total_bill", "smoker", inner=None, linewidth=1, scale="area", split=True, width=0.75).despine(left=True).add_legend(title="smoker")
g.savefig(os.path.join(options.output_dir, "figures", "violinplots.png"))
这是输出图 violinplots.png
:
虽然我更喜欢这样的东西:
总结一下:
- 使用
white
和 blue
颜色
- 替换坐标轴
names
- 只写
leftmost y axis
- 自己制作
legend with the blue category only
提前谢谢你。欢迎任何帮助。
万一有人感兴趣,这里是我最终解决这个数字的方法,感谢 MrPedru22:
import seaborn as sns
tips = sns.load_dataset("tips")
sns.set(context="paper", palette="colorblind", style="ticks")
g = sns.FacetGrid(tips, col="time", sharey=False, size=4, aspect=.5)
g = g.map(seaborn.violinplot, "sex", "total_bill", "smoker", cut=0, inner=None, split=True, palette={"No": "#4477AA", "Yes": "white"}, saturation=1).despine(left=True)
# Set axis labels & ticks #
g.fig.get_axes()[0].set_xlabel("Lunch")
g.fig.get_axes()[1].set_xlabel("Dinner")
g.fig.get_axes()[0].set_xticklabels(["Male", "Female"])
g.fig.get_axes()[1].set_xticklabels(["Male", "Female"])
g.fig.get_axes()[0].set_ylabel("Total bill")
g.fig.get_axes()[0].set_yticks(range(0, 80, 10))
g.fig.get_axes()[1].set_yticks([])
g.fig.get_axes()[0].spines["left"].set_visible(True)
# Set legend #
handles, labels = g.fig.get_axes()[0].get_legend_handles_labels()
g.fig.get_axes()[0].legend([handles[1]], ["Non-smoker"], loc='upper left')
# Fixing titles #
g.fig.get_axes()[0].set_title("")
g.fig.get_axes()[1].set_title("")
g.plt.show()
这里有一些答案:
import seaborn as sns
tips = sns.load_dataset("tips")
sns.set(style="ticks", palette="colorblind")
g = sns.FacetGrid(tips, col="time", size=4, aspect=.75)
g = g.map(sns.violinplot, "sex", "total_bill", "smoker", palette={"No": "b", "Yes": "w"}, inner=None, linewidth=1, scale="area", split=True, width=0.75).despine(left=True)
g.fig.get_axes()[0].legend(title= 'smoker',loc='upper left')
g.set_axis_labels('lunch','total bill')
sns.plt.show()
- 使用白色和蓝色:通过调色板,如上所示("w" 表示白色)
- 替换坐标轴名称:用
set_axis_labels
方法
- 其余的我找不到答案,但请查看文档:
http://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.FacetGrid.html#seaborn.FacetGrid
希望对您有所帮助!
在我最近发现 seaborn
之前,我曾经使用 matplotlib
创建我所有的地块。我发现特别有趣的是,它允许您拆分小提琴以比较给定的 hue
变量。
嗯,我的主要问题是我不知道我必须修改什么才能更改 小提琴颜色、轴名称,或将图例放在我想要的地方。
这是我从 seaborn
:
import seaborn as sns
tips = sns.load_dataset("tips")
sns.set(style="ticks", palette="colorblind")
g = sns.FacetGrid(tips, col="time", size=4, aspect=.75)
g = g.map(sns.violinplot, "sex", "total_bill", "smoker", inner=None, linewidth=1, scale="area", split=True, width=0.75).despine(left=True).add_legend(title="smoker")
g.savefig(os.path.join(options.output_dir, "figures", "violinplots.png"))
这是输出图 violinplots.png
:
虽然我更喜欢这样的东西:
总结一下:
- 使用
white
和blue
颜色 - 替换坐标轴
names
- 只写
leftmost y axis
- 自己制作
legend with the blue category only
提前谢谢你。欢迎任何帮助。
万一有人感兴趣,这里是我最终解决这个数字的方法,感谢 MrPedru22:
import seaborn as sns
tips = sns.load_dataset("tips")
sns.set(context="paper", palette="colorblind", style="ticks")
g = sns.FacetGrid(tips, col="time", sharey=False, size=4, aspect=.5)
g = g.map(seaborn.violinplot, "sex", "total_bill", "smoker", cut=0, inner=None, split=True, palette={"No": "#4477AA", "Yes": "white"}, saturation=1).despine(left=True)
# Set axis labels & ticks #
g.fig.get_axes()[0].set_xlabel("Lunch")
g.fig.get_axes()[1].set_xlabel("Dinner")
g.fig.get_axes()[0].set_xticklabels(["Male", "Female"])
g.fig.get_axes()[1].set_xticklabels(["Male", "Female"])
g.fig.get_axes()[0].set_ylabel("Total bill")
g.fig.get_axes()[0].set_yticks(range(0, 80, 10))
g.fig.get_axes()[1].set_yticks([])
g.fig.get_axes()[0].spines["left"].set_visible(True)
# Set legend #
handles, labels = g.fig.get_axes()[0].get_legend_handles_labels()
g.fig.get_axes()[0].legend([handles[1]], ["Non-smoker"], loc='upper left')
# Fixing titles #
g.fig.get_axes()[0].set_title("")
g.fig.get_axes()[1].set_title("")
g.plt.show()
这里有一些答案:
import seaborn as sns
tips = sns.load_dataset("tips")
sns.set(style="ticks", palette="colorblind")
g = sns.FacetGrid(tips, col="time", size=4, aspect=.75)
g = g.map(sns.violinplot, "sex", "total_bill", "smoker", palette={"No": "b", "Yes": "w"}, inner=None, linewidth=1, scale="area", split=True, width=0.75).despine(left=True)
g.fig.get_axes()[0].legend(title= 'smoker',loc='upper left')
g.set_axis_labels('lunch','total bill')
sns.plt.show()
- 使用白色和蓝色:通过调色板,如上所示("w" 表示白色)
- 替换坐标轴名称:用
set_axis_labels
方法 - 其余的我找不到答案,但请查看文档: http://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.FacetGrid.html#seaborn.FacetGrid 希望对您有所帮助!