гистограмма matplotlib с частотой и количеством
У меня есть данные (из текстового файла с разделителями пробела с двумя столбцами), который уже вставлен, но только шириной 1. Я хочу увеличить эту ширину примерно до 5. Как это сделать, используя numpy / matplotlib в Python?
С помощью,
data = loadtxt('file.txt') x = data[:, 0] y = data[:, 1] plt.bar(x,y)
создает слишком много баров и использует,
plt.hist(data)
не соответствует гистограмме. Наверное, я не понимаю, как работает гистограмма графика matplotlib.
См. Некоторые из приведенных ниже данных.
264 1 265 1 266 4 267 2 268 2 269 2 270 2 271 2 272 5 273 3 274 2 275 6 276 7 277 3 278 7 279 5 280 9 281 4 282 8 283 11 284 9 285 15 286 19 287 11 288 12 289 10 290 13 291 18 292 20 293 14 294 15
- осевая линия между разным сюжетом (без подзаголовков) с использованием matplotlib
- Matplotlib рисует Сплайн из нескольких точек
- Измените легенду о плане панды
- объединить различные морские решетки фасетов в единый участок
- Странное поведение boxplot matplotlibs при использовании формы надреза
Что делать, если вы используете numpy.reshape
для преобразования ваших данных перед использованием plt.bar
, например:
In [83]: import numpy as np In [84]: import matplotlib.pyplot as plt In [85]: data = np.array([[1,2,3,4,5,6], [4,3,8,9,1,2]]).T In [86]: data Out[86]: array([[1, 4], [2, 3], [3, 8], [4, 9], [5, 1], [6, 2]]) In [87]: y = data[:,1].reshape(-1,2).sum(axis=1) In [89]: y Out[89]: array([ 7, 17, 3]) In [91]: x = data[:,0].reshape(-1,2).mean(axis=1) In [92]: x Out[92]: array([ 1.5, 3.5, 5.5]) In [96]: plt.bar(x, y) Out[96]: <Container object of 3 artists> In [97]: plt.show()
Я не эксперт в matplotlib, но я считаю, что история невероятно полезна. Примеры на сайте matplotlib дают большой обзор некоторых функций.
Я не знаю, как использовать предоставленные образцы данных без их преобразования. Я изменил ваш пример, чтобы деквантовать эти данные, прежде чем создавать гистограмму.
Я вычислил размер бункера, используя первый ответ этого вопроса .
import matplotlib.pyplot as plt import numpy as np data = np.loadtxt('file.txt') dequantized = data[:,0].repeat(data[:,1].astype(int)) dequantized[0:7] # Each row's first column is repeated the number of times found in the # second column creating a single array. # array([ 264., 265., 266., 266., 266., 266., 267.]) def bins(xmin, xmax, binwidth, padding): # Returns an array of integers which can be used to represent bins return np.arange( xmin - (xmin % binwidth) - padding, xmax + binwidth + padding, binwidth) histbins = bins(min(dequantized), max(dequantized), 5, 5) plt.figure(1) plt.hist(dequantized, histbins) plt.show()
Эта гистограмма отображается следующим образом.
Надеюсь, этот пример полезен.
- Python: Matplotlib Патчи и контурные сюжеты
- Как нарисовать стрелку в matplotlib, если одна ось содержит время?
- Изменение интервала тире в пунктирной линии в matplotlib
- Pyplot: Общие оси и свободное пространство между подзаголовками
- Тексты, отрезанные от графика – Matplotlib / Python
- Построение стохастических процессов в Python
- Как ограничить диапазон оси x с помощью imshow ()?
- создание цветной временной диаграммы с использованием colorbar и colormaps в python
- Число баллов T ^ 2 для хотеллинга в python