【问题标题】:modifying scipy stats.probplot plotting function with matplotlib使用 matplotlib 修改 scipy stats.probplot 绘图功能
【发布时间】:2019-06-02 08:38:22
【问题描述】:

我不是 matplotlib 专家,所以我很难设置 scipy stats 的参数。

我的代码采用 pandas df 列,遍历列,并尝试使用 stats.probplot 函数绘制列的值。这是我的代码:

plt.figure(figsize=(10,5))
for col in model_predictions.columns:
    res = stats.probplot(df[col]), plot=plt)
    plt.legend = col
plt.show()

这会生成我想要的图表,但难以阅读(没有图例,相同的颜色)。除了将它们绘制在彼此之上之外,我还想以不同的颜色绘制每条线,并为每条线添加一个图例,等于 col 中的 str。有什么办法可以做到这一点?

我总是可以获取函数的元组输出,通过另一个新的 def 运行它,然后将输出添加到新的 pandas df(以便以后用更多控制进行绘图);但我想知道是否有更快的方法。

谢谢

【问题讨论】:

  • 在循环外创建一个图形和坐标区,并将坐标区作为plot 的参数传递,应该让它们都在同一个坐标轴上
  • scipy.stats.probplot 文档中的示例实际上展示了如何使用不同的子图。
  • 谢谢。我知道如何使用不同的子图。我不想要不同的子情节,但都在同一个情节中。
  • plt.show 放在循环之外
  • 嗯,是的,使用单个子图或多个子图有什么区别?

标签: python pandas matplotlib scipy


【解决方案1】:

您可以通过获取stats.probplot 的输出来手动绘制它们,即:

from scipy.stats import probplot

for col in model_predictions.columns
    plt.plot(*stats.probplot(df[col])[0], label=col)
plt.legend(loc='best')
plt.show()

【讨论】:

  • 这个几乎可以工作:plt.legend(loc='best') 显示“TypeError: 'str' object is not callable”
  • 已修复。谢谢@Mstaino
猜你喜欢
  • 2020-07-21
  • 1970-01-01
  • 2019-03-25
  • 2018-03-29
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多