gpt4 book ai didi

表示范围的 Python 条形图

转载 作者:行者123 更新时间:2023-12-01 12:04:16 29 4
gpt4 key购买 nike

我想在python中制作一个分类图来表示几个变量的范围。我想也许我会使用条形图并为条形设置范围。这是我的条形图

import matplotlib.pyplot as plt
import numpy as np

data = {'a':.3, 'b': .3, 'c': .3, 'd': .1,'e':.1,'f':.1}

names = list(data.keys())
values = list(data.values())

plt.bar(names,values)
plt.show()

从给定代码生成的条形图:
enter image description here
请告诉我如何将条形值设置为类似 range(.3,.4) 的值.换句话说,我希望条形从 say(.3 到 .4 代表一个范围)而不是(0 到 0.3 现在的样子)。

我知道使用条形图来表示范围很奇怪,如果有人有其他方法可以让我这样做,请添加您的代码。只要我得到一个表示至少 6 个变量范围的图,我就不太在意,我可以在其中轻松手动更改范围值。

最佳答案

一种方法是使用 LineCollection并将线宽设置为类似于条形图。

使用 LineCollection您需要提供一组 x 值来绘制 data 中提供的每个范围.要创建与您的范围相关联的 y 值,我使用了 np.arange .自 np.arange只能计算整数,我将 data 中的每个值相乘10 并将结果除以 10 以返回输入数据。

data = {'a':(.3,.4), 'b': (.3,.4), 'c': (.3,.4), 'd': (0,.1),'e':(0,.1),'f':(0,.1)}

names = list(data.keys())
values = list(data.values())

values = [np.arange(a[0]*10, (a[1]+0.1)*10,1)/10 for a in values]
xs = [np.ones(a.shape) for a in values]

xs = [i*a for i,a in zip(range(len(xs)), xs)]

verts = []
for x,y in zip(xs, values):
verts.append(list(zip(x.tolist(), y.tolist())))

lc = LineCollection(verts, linewidths=40)

fig,ax = plt.subplots()
ax.add_collection(lc)
ax.set_xlim(-0.5,len(values) )
plt.xticks(np.arange(len(values)), names)

enter image description here

关于表示范围的 Python 条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59394552/

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