Как построить количество раз, когда каждый элемент находится в списке

Я пытаюсь сделать что-то немного, что я не думаю, что это будет сложно, но я не могу понять, как сделать python / matplotlib / pylab.

Учитывая ввод, я хочу, чтобы гистограмма показывала мне количество раз, когда появляется каждый элемент.

Учитывая список

x=range(10) 

Мне бы хотелось, чтобы на выходе была одна строка, y – значение 10, равное x = 1, никаких других графиков.

учитывая список

 x=range(10) x.append(1) 

Я хотел бы, чтобы на выходе было два столбца, ay значение 9 для x = 1, ay значение 1 для x = 2. Как я могу это сделать?

Этот код дает вам гистограмму, подобную той, которая вам нравится:

 import matplotlib.pyplot as plt import numpy as np y = np.array([0,1,2,3,4,5,6,7,8,9,1]) plt.hist(y); plt.show() 

Что-то вроде этого? Этот код использует счетчик для подсчета количества экземпляров, которые объект имеет в массиве (в этом случае подсчет количества раз, когда целое число входит в ваш список).

 import matplotlib.pyplot as plt from collections import Counter # Create your list x = range(10) x.append(1) # Use a Counter to count the number of instances in x c = Counter(x) plt.bar(c.keys(), c.values()) plt.show() 

Вы, конечно, должны начать с подсчета элементов:

 >>> from collections import Counter >>> counts = Counter(my_iterator) 

Затем мы хотим посчитать эти цифры:

 >>> count_von_count = Counter(counts) 

Тогда у вас есть размер ваших баров. Сделайте это в списке и занесите в него:

 >>> bars = [count_von_count[i] for i in range(max(count_von_count) + 1)] 

Пример расширенного списка:

 >>> from collections import Counter >>> counts = Counter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1]) >>> counts Counter({1: 2, 0: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}) >>> count_von_count = Counter(counts.values()) >>> count_von_count Counter({1: 9, 2: 1}) >>> bars = [count_von_count[i] for i in range(max(count_von_count) + 1)] >>> bars [0, 9, 1] 

Если вы собираете данные в список списков, вы можете сделать что-то вроде этого:

 import numpy as np import matplotlib.pyplot as plt x = [range(10)] x.append([1]) count = map(len, x) plt.bar(range(len(count)), count) plt.show() 

введите описание изображения здесь

Обратите внимание, что первый бар имеет высоту 10, а не 9. Я не знаю, действительно ли это то, что вы хотите, или если я не понимаю ваше намерение.