【问题标题】:scaling axhline to data将 axhline 缩放到数据
【发布时间】:2021-02-17 20:06:30
【问题描述】:

我想将一条线从 y 轴延伸到我的数据。但是,子图的原点不是 0,0。因此,当我为 hline 的 xmax 指定数据的 x 值时,我得到:

hln = ax.axhline(0.5,xmax=0.07,zorder=5,c='#cccccc')

当我用 xlim 偏移 hline 时,我接近了:

xlim = ax.get_xlim()
hln = ax.axhline(0.5,xmin=xlim[0],xmax=0.07+abs(xlim[0]),zorder=5,c='#cccccc')

但是,我有一堆子图和多行/子图,所以我想从我的数据源调用 xmax 的值。虽然我基本上可以使用上述方法到达那里,但 axhline 的文档建议可以调用 transform kwarg。这似乎是最简单的方法,但我似乎无法弄清楚实现。当我尝试时:

 hln = ax.axhline(0.5,xmin=xlim[0],xmax=0.07+abs(xlim[0]),zorder=5,c='#cccccc',kwargs={'transform':ecdf_z_indiv})

我明白了:

AttributeError: 'Line2D' 对象没有属性 'kwargs'

在上述情况下,ecdf_z_indiv 是一个 statsmodels.distributions.empirical_distribution.ECDF 对象,尽管我也尝试了 x 值的数组。但是,这对于当前的错误似乎无关紧要。

干杯

【问题讨论】:

  • hlines 呢?你可以说ax.hlines(0.5, xmin=xlim[0], xmax=0.07, transform=ax.transData)。这能解决你的问题吗?
  • 不完全,但谢谢你的建议

标签: python-3.x matplotlib line transform


【解决方案1】:

这是一个答案,但这不是我想要的答案。

这行得通:

xlim = ax.get_xlim()
xlim_rng = xlim[1]-xlim[0]
ax.axhline(0.5, xmin=xlim[0], xmax=(0.07/xlim_rng)-xlim[0]/xlim_rng)

如果有人有建议,我仍然对带有转换的解决方案感兴趣。我怀疑它不会那么冗长。

干杯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2018-11-29
    • 2013-06-06
    • 1970-01-01
    • 2013-04-13
    相关资源
    最近更新 更多