@Herodotus

Как нарисовать гистограмму?

не понимаю, как нарисовать гистограмм в таком виде(приложенное фото). Есть массив с числами 0 и 1( размеренность - 1000). Через matplotlib не получается совсем и не понимаю почему. Помогите, пожалуйста650837ec5eb9c450797313.png
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
Maksim_64
@Maksim_64
Data Analyst
Мы строим диаграммы (гистограмма это разновидность диаграммы), для того что бы иметь какое то полезное представление о данных, диаграмма должна о чем то "говорить". О чем же мне должна рассказать твои диаграмма (приложенное фото), я не знаю. Гистограмма показывает плотность распределения номинальную или относительную. То есть номинальную зеленых шариков у меня 10, красных 5, а белых один, относительную в виде пропорций то есть 10/16, 5/16, 1/16. Где 16 это общее количество элементов. Это дискретный кейс, известный как bar chart. Также есть непрерывный кейс, например значения наши от 0 до 1 или -3 до 3. Мы разбиваем на интервалы известные как "bins" и считаем количество номинальное или относительное в каждом интервале. Давай пример сообразим.
zero_ones = np.random.choice([0,1], 100, p = [0.3,0.7])
unique, counts = np.unique(zero_ones, return_counts=True)
unique_strings = [str(digit) for digit in unique]
plt.bar(unique_strings,counts, edgecolor='black')
plt.show()


Мы сгенерировали 100 нулей и единичек с вероятность 30% иметь 0 и 70% иметь 1 (для примера). Посчитали из массива и смотрим посредством графика на распределение данных.
Пример два
X = np.random.normal(0,1,1000)
plt.hist(X, edgecolor='black', bins=50)
plt.show();

Мы сгенерировали выборку 1000 значений из гаусового распределения с параметрами среднее 0 и стандартное отклонение 1. Разбили на 50 интервалов и посчитали количество в каждом интервале.
Вот это гистограммы. Они рассказывают о плотности распределения.
А то что у тебя это не гистограмма. Что у нас по оси индексы, что по оси y 1 или 0. Какие то индексы пропущены, там и пробелы. В гистограммах по оси 'x' у тебя уникальные значения, а по оси 'y' либо номинальное либо относительное количество.
Ответ написан
Комментировать
@dmshar
"Код из оф. Источника не помог" -- наверное потому, что не там ищите. Вернее потому, что то, что вы называете гистограммой - таковой на самом деле не является.
Ниже пример построения и затребованного вами графика, и настоящей гистограммы. Как говориться - почувствуйте разницу.

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
x= np.random.randint(0,2000,500)
plt.hist(x)
sns.rugplot(data=x,height =0.5)


Гистограмма:
650893708504f076171947.png

Те же данные в форме, которую вы вроде бы хотите получить:
65089396cd951302402060.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы