2017-10-08 27 views
3
import seaborn as sns 
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
%matplotlib inline 
labels1 = ['A','B','C','D'] 
labels2 = ['E','F','G','H'] 

fig, ax = plt.subplots() 
df = pd.DataFrame(np.random.random(size=(10,4)), columns=('A','B','C','D')) 
sns.stripplot(data=df, orient='h', ax=ax) 
ax2 = ax.twinx() 
ax2.set(yticks=ax.get_yticks(), yticklabels=labels2); 

Link to chart produced合わせ二y軸は、一次X軸上のstripplotとティック

Iは上stripplotのy軸目盛りと並ぶ二y軸上にいくつかのラベルを作成したい

プライマリy軸。私はEがDと同じ高さになるようにしたい、FとCなど

私はダニを整列させるためにいくつかの方法を試みましたが、運がありません。

これらのラベルを追加する方法についての他の提案は有用に受け入れられました。

答えて

1

ダニはすでに ax2.set(yticks=ax.get_yticks(), yticklabels=labels2)を使用して正しく設定されています。欠落しているのは、軸の限界です。これは両方の軸で同じでなければなりません。

あなたは

ax2.set_ylim(ax.get_ylim()) 

または.setと一緒に行くを使用することができ、次のいずれか

ax2.set(yticks=ax.get_yticks(), yticklabels=labels2, ylim=ax.get_ylim()) 

コンプリート例:

import seaborn as sns 
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 

labels1 = ['A','B','C','D'] 
labels2 = ['E','F','G','H'] 

fig, ax = plt.subplots() 
df = pd.DataFrame(np.random.random(size=(10,4)), columns=('A','B','C','D')) 
sns.stripplot(data=df, orient='h', ax=ax) 
ax2 = ax.twinx() 
ax2.set(yticks=ax.get_yticks(), yticklabels=labels2, ylim=ax.get_ylim()) 

plt.show() 

enter image description here

+0

クリアsolutioあなたがこのように置いたときにはとても簡単です。ダニのためだけにセカンダリ軸を作成することを伴わない効率的な代替案がある場合、私はまだそれらを聞いて喜んでいるでしょう。 – ac24

+0

ティックのラベルを軸の右側に付けるオプションはありますが、それらは常に左のものと同じです。したがって、A、B、C、Dを両側に置くのは簡単ですが、ここで異なるはずなので、ここで行ったように別の軸を使用する必要があります。 – ImportanceOfBeingErnest

+0

第2のラベルを第1のラベルとは別に使用することについて、以前は[機能要求](https://github.com/matplotlib/matplotlib/issues/8181)を作成したことを思い出しましたが、まだ開いています。 – ImportanceOfBeingErnest

関連する問題