2017-10-08 116 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蜱

我想產生在輔助y軸線向上與在stripplot的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

清除搜索解決方案當你這樣說的時候很簡單。如果有任何有效的替代方案不涉及爲蜱創建輔助軸,我仍然樂於聽到它們。 – ac24

+0

儘管可以選擇在軸的右側標記刻度,但它們總是與左側的標記相同。因此,將A,B,C,D放在兩邊都很容易,但由於它們在這裏應該有所不同,所以需要使用不同的座標軸,就像您在這裏所做的那樣。 – ImportanceOfBeingErnest

+0

我記得我曾經做過一個[功能請求](https://github.com/matplotlib/matplotlib/issues/8181)關於獨立於第一個使用第二個標籤,但它仍然是開放的。 – ImportanceOfBeingErnest