gpt4 book ai didi

python - 为条形图中的每个条设置恒定宽度

转载 作者:行者123 更新时间:2023-11-28 21:52:55 25 4
gpt4 key购买 nike

我正在尝试绘制一个条形图,其中每个 bin 的长度不同,结果我得到了一个非常难看的结果。c:) 我想做的仍然是能够定义一个 bin of deference长度,但所有条形图都以相同的固定宽度绘制。我怎样才能做到这一点?这是我到目前为止所做的:

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_palette("deep", desat=.6)
sns.set_context(rc={"figure.figsize": (8, 4)})
np.random.seed(9221999)

data = [0,2,30,40,50,10,50,40,150,70,150,10,3,70,70,90,10,2]
bins = [0,1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200]
plt.hist(data, bins=bins);

enter image description here

编辑

这个问题已被标记为重复,但实际上没有一个建议的链接解决了我的问题;第一个是一个非常糟糕的解决方法,第二个根本没有解决问题,因为它将所有条形的宽度设置为某个数字。

最佳答案

给你,用 seaborn,随便你。但是您必须了解 seaborn 本身使用 matplotlib 来创建绘图。并且:请删除您的 other question , 现在它确实是一个副本。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_palette("deep", desat=.6)
sns.set_context(rc={"figure.figsize": (8, 4)})

data = [0,2,30,40,50,10,50,40,150,70,150,10,3,70,70,90,10,2]
bins = [0,1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200]


bin_middles = bins[:-1] + np.diff(bins)/2.
bar_width = 1.
m, bins = np.histogram(data, bins)
plt.bar(np.arange(len(m)) + (1-bar_width)/2., m, width=bar_width)
ax = plt.gca()
ax.set_xticks(np.arange(len(bins)))
ax.set_xticklabels(['{:.0f}'.format(i) for i in bins])

plt.show()

enter image description here

我个人认为,像这样绘制数据会令人困惑。使用非线性(或非对数)轴缩放通常不是一个好主意。

关于python - 为条形图中的每个条设置恒定宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27534350/

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