带matplotlib的直方图

2024-09-26 22:54:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用matplotlib的直方图来表示网络的度分布。我要表示的数据结构类似于下面的字典:

dic = {'COMBUSTÍVEIS E LUBRIFICANTES.': 214,
'Emissão Bilhete Aéreo': 234,
'LOCAÇÃO OU FRETAMENTO DE VEÍCULOS AUTOMOTORES': 183,
'MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE PARLAMENTAR': 201,
'SERVIÇOS POSTAIS': 124,
'TELEFONIA': 226,
'DIVULGAÇÃO DA ATIVIDADE PARLAMENTAR.': 188,
'FORNECIMENTO DE ALIMENTAÇÃO DO PARLAMENTAR': 14,
'CONSULTORIAS PESQUISAS E TRABALHOS TÉCNICOS.': 106,
'SERVIÇO DE SEGURANÇA PRESTADO POR EMPRESA ESPECIALIZADA.': 27,
'ASSINATURA DE PUBLICAÇÕES': 11,
'PASSAGENS AÉREAS': 21,
'HOSPEDAGEM EXCETO DO PARLAMENTAR NO DISTRITO FEDERAL.': 36}

使用下面的代码,我根据各自的值对成绩进行计数和分组:

degree_sequence = sorted([d for n, d in dic.items()], reverse=True)
degree_count = collections.Counter(degree_sequence)
deg, cnt = zip(*degree_count.items())

并绘制直方图:

fig, ax = plt.subplots()
plt.bar(deg, cnt, width=0.80, color='b')
plt.title("Degree Histogram")
plt.ylabel("Count")
plt.xlabel("Degree")
ax.set_xticks([d + 0.4 for d in deg])
ax.set_xticklabels(deg)
plt.axes([0.4, 0.4, 0.5, 0.5])
Gcc = sorted(nx.connected_component_subgraphs(G), key=len, reverse=True)[0]
plt.axis('off')
plt.show()

结果:

enter image description here

字典的低值视图已经很差了,x轴值彼此非常接近,这使得它很难理解。在最初的工作中,字典有大约300个键值,这大大恶化了可视化效果。那么我能做些什么来提高可视化效果和空间x轴值呢?你知道吗


Tags: for字典depltax直方图dosorted
1条回答
网友
1楼 · 发布于 2024-09-26 22:54:18

代替使用deg值作为条形图的x坐标,您可以使用生成0、1、2、3等x值的range(len(deg))。然后,可以用实际的deg值替换记号标签

fig, ax = plt.subplots()
plt.bar(range(len(deg)), cnt, width=0.6, color='b')
plt.title("Degree Histogram")
plt.ylabel("Count")
plt.xlabel("Degree")
ax.set_xticks(range(len(deg)))
ax.set_xticklabels(deg)
plt.axes([0.4, 0.4, 0.5, 0.5])
plt.axis('off')
plt.show()

您还可以将上述两行组合起来,将x记号设置为一行

plt.xticks(range(len(deg)), deg)

enter image description here

相关问题 更多 >

    热门问题