Я использовал для создания всех моих графиков, используя matplotlib
, пока не обнаружил недавно seaborn
. Мне было особенно интересно, что он позволяет разбить скрипки, чтобы сравнить заданную переменную 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()