来自Seaborn distplot的matplotlib vlines动态ymax参数

时间:2019-12-17 15:48:34

标签: python matplotlib seaborn

我正在从熊猫数据框中绘制一个seaborn distplot作为我的初始matplotlib画布。然后向画布添加更多信息,我使用vlines作为垂直标记。 但是,我没有找到一种简单的方法来为vline定义动态ymax参数,因为它依赖于分布。

sns.distplot(data.values) # distribution chart
plt.vlines(x=[1,2], ymin=0, ymax=?)

是否有一种方法可以根据图表中的最大值传递ymax? (因此绘图高度和垂直线高度将对齐)。我考虑过类似的东西:

plt.vlines(x=[1,2], ymin=0, ymax=data.values.max())

但是data.values的最大值实际上在X轴上表示。

2 个答案:

答案 0 :(得分:1)

您可以循环输入点(如果输入点不多,例如<= 10,则很有用)

for i in [1,2]:
    ax.axvline(i)

或者您可以为vlines提供混合变换,

ax.vlines(x=[1,2], ymin=0, ymax=1, transform=ax.get_yaxis_transform())

答案 1 :(得分:0)

我找到了一种检索画布坐标的方法:

dist = sns.distplot(data.values)
ymin,ymax = dist.get_ylim()

那很简单:

plt.vlines(x=[1,2], ymin=ymin, ymax=ymax)