2015-10-20 54 views
10

最近私がseabornを発見するまで私はmatplotlibを使ってすべての私のプロットを作成しました。あなたが与えられたhueの変数を比較するためにバイオリンを分けることができるという事実は特に興味深いことが分かりました。海軍のバイオリンプロット:ヴァイオリンの色、軸の名前、凡例を変更

まあ、私の主要な問題は、私は私が名前、または場所私が欲しいの伝説を軸バイオリンの色を変更するために変更しなければならないのかわからないということです。ここで

は私がseabornから続く例である:私はむしろこのような何かをしたいと思いますが

enter image description here

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ですenter image description here

要約すると210

  • 使用whiteblue
  • 軸に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() 

enter image description here

+1

この文書をお読みになりましたか?そして何か試してみる? – jrjc

+1

もちろん、私は週末全体に積み重ねられています。それが私が求めている理由です。 バイオリンの色について:私はsns.violinplotの色とsns.set()のパレットの色を自分の色のパレットで変更しました。 2色のカラーパレットを作成すると、2つ目の色は無視されます。それは最初の色とその色のより明るいバージョンを使用します。私は色を定義する場合は同じです。凡例の は、理論的にはそれが外に凡例を配置する必要がありますが、それはそれを無視しています。それは、このような大したことではないですので、 名および軸Iは、イラストレーターでそれらを置き換えることができます。しかし、私は色に本当に不満です。 – ofornes

+0

たとえば、 'despine(left = True)'で軸を削除するのはあなたです。私の推測では、あなたは十分に文書を読んでいないということです。色の問題だけであれば、色の部分に質問を減らしてみて、何を試してみたら、誰かが答えるかもしれません。 – jrjc

答えて

5

は、いくつかの答えは以下のとおりです。

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() 
+0

正しく理解すれば、両方のバイオリンプロットは 'g.fig'の下にあります。ですから、例えば、私はそうでない場合は1本の斧( 'g.fig 0〜斧(' g.fig.get_axes()[0] ')、経由となり、左端のバイオリンプロット内の任意の要素にアクセスしたい場合。 get_axes()[1] ')、そうですか? – ofornes

+0

はい、正しいです。あなたはランチとディナーでセックスを交換したかったように、あなたは 'g.fig.get_axes()[0] .set_xlabel( "昼食")'と 'g.fig.get_axes()でそれを行うことができます[1]。 set_xlabel( "dinner") ' – MrPedru22

+0

x軸を1本の軸のように結合する方法はありますか? – ofornes

関連する問題