gpt4 book ai didi

python - 使用 matplotlib 同时绘制两个直方图时的不透明度误导

转载 作者:太空狗 更新时间:2023-10-29 21:40:13 26 4
gpt4 key购买 nike

假设我有两个直方图,我使用 hist 参数设置不透明度:'alpha=0.5'

我已经绘制了两个直方图,但我得到了三种颜色!从不透明度的角度来看,我理解这是有道理的。

但是!用三种颜色向某人展示两种事物的图表会让人非常困惑。我能否以某种方式将每个 bin 的最小条设置为在前面且没有不透明度?

示例图

enter image description here

最佳答案

处理这个问题的通常方法是让绘图有一些小的分离。当 plt.hist 被赋予多组数据时,这是默认完成的:

import pylab as plt

x = 200 + 25*plt.randn(1000)
y = 150 + 25*plt.randn(1000)
n, bins, patches = plt.hist([x, y])

Example 1

您改为堆叠它们(这可以在上面使用参数 histt​​ype='barstacked' 完成)但请注意顺序不正确。

这可以通过单独检查每对点以查看哪个更大然后使用 zorder 设置哪个先出现来解决。为简单起见,我使用上面代码的输出(例如,n 是 x 和 y 的每个 bin 中点数的两个堆叠数组):

n_x = n[0]
n_y = n[1]
for i in range(len(n[0])):
if n_x[i] > n_y[i]:
zorder=1
else:
zorder=0
plt.bar(bins[:-1][i], n_x[i], width=10)
plt.bar(bins[:-1][i], n_y[i], width=10, color="g", zorder=zorder)

这是生成的图像: enter image description here

通过像这样改变顺序,图像看起来确实很奇怪,这可能是它没有实现并且需要 hack 才能实现的原因。我会坚持使用小分离方法,任何习惯于这些图的人都假设它们采用相同的 x 值。

关于python - 使用 matplotlib 同时绘制两个直方图时的不透明度误导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18453570/

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