2016-07-27 3 views
1

У меня очень длинный список идентификаторов (ID - это строковые значения. Я хочу построить гистограмму этого списка. В других потоках в stackoverflow есть некоторые коды для построения гистограммы но гистограмма я хочу должна выглядеть эта картина (т.е. высокие значения находятся в левой части и значения постепенно уменьшаются при увеличении х-оси.Гистограмма графика списка строк в Python

Это код для построения регулярной гистограммы

import pandas 
from collections import Counter 
items=a long list of strings 
letter_counts = Counter(items) 
df = pandas.DataFrame.from_dict(letter_counts, orient='index') 
df.plot(kind='bar') 

The histogram

+0

Вы спрашиваете о том, как читать данные в чем-то, что «matplotlib» может читать или как отформатировать гистограмму после чтения данных и преобразовать их в числовые значения? – Aaron

+0

@Aaron Я отредактировал вопрос – HimanAB

ответ

0

как о чем-то вдоль этих линий ...

from collections import Counter 
import matplotlib.pyplot as plt 
import numpy as np 

counts = Counter(['a','a','a','c','a','a','c','b','b','d', 'd','d','d','d','b']) 
common = counts.most_common() 
labels = [item[0] for item in common] 
number = [item[1] for item in common] 
nbars = len(common) 

plt.bar(np.arange(nbars), number, tick_label=labels) 
plt.show() 

most_common() вызова является основным новшеством этого сценария. Остальное легко найти в документации matplotlib (уже в моем комментарии).

+0

'pyplot' имеет множество вариантов, чтобы ваш график выглядел так же красиво, как вам хочется. В [документации] (http://matplotlib.org/api/pyplot_api.html?highlight=bar#matplotlib.pyplot.bar) есть несколько действительно хороших примеров с исходным кодом. – Aaron

+0

most_common() удаляет некоторые элементы. Например, исходный список содержит 345000 элементов, но most_common() возвращает 43000 элементов – HimanAB

+1

Подклассы счетчиков dicts, поэтому вы можете сделать: '' ' labels = list (counts.keys()); number = list (counts.values ​​()) '' ' – story645

Смежные вопросы