Гистограмма с матплотлибом - PullRequest
1 голос
/ 05 июня 2019

Я пытаюсь представить распределение степеней сети с помощью гистограммы 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?

1 Ответ

2 голосов
/ 05 июня 2019

Вместо использования deg значений в качестве x-координат для гистограммы, вы можете использовать range(len(deg)), который генерирует 0, 1, 2, 3 и т. Д. В качестве x-значений. Затем вы можете заменить метки галочек фактическими 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()

Вы также можете объединить две вышеупомянутые строки для установки х-тиков в одну как

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...