【问题标题】:Plotting quantiles, median and spread using scipy and matplotlib [closed]使用 scipy 和 matplotlib 绘制分位数、中位数和散布 [关闭]
【发布时间】:2013-08-21 05:19:10
【问题描述】:

我是 matplotlib 新手,我想创建一个绘图,包含以下信息:

  1. 连接大约 200 个可变长度向量(输入)的中位数的线
  2. 连接这些向量的相应分位数的线。
  3. 连接相应展开的线(最大点和最小点)。

所以基本上,它有点像一个连续的箱线图。

谢谢!

【问题讨论】:

  • 为了清楚起见,您的问题被搁置了,因为它读作“请为我做我的工作”或“请为我做一些免费的开发工作”。如果您表明您已经尝试过任何事情,您将在此处获得更好的响应。人们很乐意帮助您修复您的代码,但不太可能为您编写代码。
  • 这个问题在被标记的库的术语中形成了很好的形式,这意味着@user2696275 对正在解决的问题表现出最低限度的理解。
  • 但我完全同意@tcaswell。
  • @ViktorKerkez “...包括尝试的解决方案,为什么它们不起作用,以及预期的结果......”。这里有一个地方可以在 SO 上的库中发现很酷但记录不充分的东西,但是这个问题(就目前而言)没有表明 OP 所做的不仅仅是重新格式化并将他们的硬件或老板要求粘贴到问题中,即对回答问题的人不尊重。
  • @tcaswell 好的。但既然他已经得到了答案,那么结束这个问题是没有意义的。但我会在未来更加关注这一点。谢谢你们的cmets。 :)

标签: python matplotlib scipy boxplot quantile


【解决方案1】:

仅使用 scipymatplotlib(您在问题中仅标记了那些库)有点冗长,但您可以这样做(我只为分位数使用):

import numpy as np
from scipy.stats import mstats
import matplotlib.pyplot as plt

# Create 10 columns with 100 rows of random data
rd = np.random.randn(100, 10)
# Calculate the quantiles column wise
quantiles = mstats.mquantiles(rd, axis=0)
# Plot it
labels = ['25%', '50%', '75%']
for i, q in enumerate(quantiles):
    plt.plot(q, label=labels[i])
plt.legend()

这给了你:

现在,我会尝试说服你尝试 Pandas 库:)

import numpy as np
import pandas as pd
# Create random data
rd = pd.DataFrame(np.random.randn(100, 10))
# Calculate all the desired values
df = pd.DataFrame({'mean': rd.mean(), 'median': rd.median(),
                   '25%': rd.quantile(0.25), '50%': rd.quantile(0.5),
                   '75%': rd.quantile(0.75)})
# And plot it
df.plot()

你会得到:

或者您可以在一行中获取所有统计信息:

rd.describe().T.drop('count', axis=1).plot()

注意:我删除了count,因为它不是“5 数字摘要”的一部分。

【讨论】:

  • 我会做类似的事情,我喜欢你指出 pandas 有多棒,但你应该花点时间解释为什么你只导入 numpy 和 pandas 而不是按要求导入“scipy 和 matplotlib”。
  • 我真的很喜欢 pandas,我想引诱更多人使用它 :) 但你说得对,我添加了 scipymatplotlib 仅示例。
  • 哦,我显然不清楚,抱歉 :-) -- 我喜欢你的选择,也非常支持它。现在很好,但我只是想让你花一些话来说服提问者并告诉他你是故意选择 pandas/numpy 的。
  • 感谢@ViktorKerkez 的回答和对熊猫的介绍!
猜你喜欢
  • 2018-04-06
  • 2018-05-13
  • 2018-05-10
  • 2017-04-25
  • 2012-12-01
  • 1970-01-01
  • 2023-03-13
  • 2015-09-10
  • 2015-08-14
相关资源
最近更新 更多