将辅助y轴刻度与主X轴上的stripplot对齐

时间:2017-10-08 13:03:56

标签: python matplotlib seaborn

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轴上生成一些标签,这些标签与主y轴上的stripplot的y轴标记对齐。我希望E与D,F和C等处于同一高度。

我尝试了一些不同的方法来对齐蜱,但没有运气。

有关如何添加这些标签的任何其他建议都有助于接受。

1 个答案:

答案 0 :(得分: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