gpt4 book ai didi

python - pyplot hist() 每个堆叠组件的单独线条样式

转载 作者:太空宇宙 更新时间:2023-11-03 15:52:17 29 4
gpt4 key购买 nike

我正在尝试制作一个堆叠直方图,其中每个堆叠组件都有不同的线条样式和颜色。 color 参数接受每个组件的颜色列表。但线条样式参数 ls 则不然。有没有办法分别控制每个堆叠组件的面和线型?

import numpy as np
import matplotlib.pyplot as plt

x = np.random.random(100)

# this works:
plt.hist([x,x], histtype='stepfilled', stacked=True, color=['r', 'b'])

# this does not:
plt.hist([x,x], histtype='stepfilled', stacked=True, color=['r', 'b'], ls=['-', '--'])

理想情况下,我希望完全控制每个堆叠组件的面颜色和边缘颜色的颜色和 alpha 值。那可能吗?我尝试过使用 fc 选项,但这也不接受列表。

我还查看了这个示例 [1],它显示了 ax2 上的这种行为,但它看起来非常受黑客攻击。例如,以下代码会产生错误结果:

plt.hist([(0,1,1), (0,0,1)], histtype='step', stacked=True, fill=True)

有一种解决方法,可以捕获补丁并单独控制它们,就像这个答案[2]中一样。但我想知道是否也可以直接从 plt.hist() ?

[1] http://matplotlib.org/examples/statistics/histogram_demo_multihist.html

[2] https://stackoverflow.com/a/17517721/5064815

最佳答案

您可以cycle through the linestyles就像循环其他参数一样。

import numpy as np
import matplotlib.pyplot as plt
from cycler import cycler

plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b']) +
cycler('linestyle', ['-', '--', ':']) +
cycler('linewidth', [4,3,1])) )

x = np.random.random(100)
plt.hist([x,x*0.8,x*0.5], histtype='stepfilled', stacked=True )

plt.show()

旁注:我目前不知道为什么在此示例中循​​环顺序相反,即蓝色形状具有粗实线样式。但我想这可以根据需要进行调整。

关于python - pyplot hist() 每个堆叠组件的单独线条样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41181202/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com