Я использовал для создания всех моих графиков, используя 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()


