Гистограмма — это график, на котором категории данных представлены прямоугольными столбцами, длина и высота которых пропорциональны значениям, которые они представляют.Гистограммы могут быть построены по горизонтали или по вертикали.Гистограмма дает сравнение между муниципальными категориями.Одна из осей графика представляет собой конкретную категорию, которая сопоставляется, а другая ось представляет собой смысловые значения, соответствующие этим категориям.
Создание линейчатого графика
В matplotlib Python API есть функция bar(), которую можно использовать в стиле MATLAB или как объектно-ориентированный API.Функция синтаксиса bar() для использования с осями выглядит следующим образом:
plt.bar(x, height, width, bottom, align)
Функция создаёт гистограмму, ограниченную контуром, в зависимости от заданных параметров.Ниже приведён простой пример гистограммы, которая показывает количество студентов, обучающихся на разных курсах в институте.
import numpy as np
import matplotlib.pyplot as plt
# creating the dataset
data = {'C':20, 'C++':15, 'Java':30,
'Python':35}
courses = list(data.keys())
values = list(data.values())
fig = plt.figure(figsize = (10, 5))
# creating the bar plot
plt.bar(courses, values, color ='maroon',
width = 0.4)
plt.xlabel("Courses offered")
plt.ylabel("No. of students enrolled")
plt.title("Students enrolled in different courses")
plt.show()
Вывод:
Здесь plt.bar(курсы, значения, цвет = «бордовый») используется для указания того, что гистограмма должна быть построена с использованием столбцов «курсы» в качестве оси X и результатов в качестве оси Y.Атрибут цвета используется для установки цвета столбцов (в данном случае — бордового). plt.xlabel(«Предлагаемые курсы») и plt.ylabel(«Количество зачисленных студентов») используются для обозначения соответствующих осей. plt.title() используется для создания заголовка для графика. plt.show() используется для отображения графика в качестве вывода с помощью предыдущей команды.
Настройка линейчатого графики
import pandas as pd
from matplotlib import pyplot as plt
# Read CSV into pandas
data = pd.read_csv(r"cars.csv")
data.head()
df = pd.DataFrame(data)
name = df['car'].head(12)
price = df['price'].head(12)
# Figure Size
fig = plt.figure(figsize =(10, 7))
# Horizontal Bar Plot
plt.bar(name[0:10], price[0:10])
# Show Plot
plt.show()
Вывод:
На приведенной выше гистограмме видно, что деления на оси X перекрывают друг друга, поэтому их нельзя увидеть должным образом. Таким образом, повернув деления на оси X, их можно четко увидеть. Вот почему требуется настройка гистограмм.
import pandas as pd
from matplotlib import pyplot as plt
# Read CSV into pandas
data = pd.read_csv(r"cars.csv")
data.head()
df = pd.DataFrame(data)
name = df['car'].head(12)
price = df['price'].head(12)
# Figure Size
fig, ax = plt.subplots(figsize =(16, 9))
# Horizontal Bar Plot
ax.barh(name, price)
# Remove axes splines
for s in ['top', 'bottom', 'left', 'right']:
ax.spines[s].set_visible(False)
# Remove x, y Ticks
ax.xaxis.set_ticks_position('none')
ax.yaxis.set_ticks_position('none')
# Add padding between axes and labels
ax.xaxis.set_tick_params(pad = 5)
ax.yaxis.set_tick_params(pad = 10)
# Add x, y gridlines
ax.grid(b = True, color ='grey',
linestyle ='-.', linewidth = 0.5,
alpha = 0.2)
# Show top values
ax.invert_yaxis()
# Add annotation to bars
for i in ax.patches:
plt.text(i.get_width()+0.2, i.get_y()+0.5,
str(round((i.get_width()), 2)),
fontsize = 10, fontweight ='bold',
color ='grey')
# Add Plot Title
ax.set_title('Sports car and their price in crore',
loc ='left', )
# Add Text watermark
fig.text(0.9, 0.15, 'Jeeteshgavande30', fontsize = 12,
color ='grey', ha ='right', va ='bottom',
alpha = 0.7)
# Show Plot
plt.show()
Вывод:
Для линейчатых графиков доступно гораздо больше настроек.
Несколько столбчатых графиков
Несколько столбчатых диаграмм используются для сравнения наборов данных, когда одна из переменных меняется. Мы можем легко преобразовать её в диаграмму с накоплением, где каждая подгруппа отображается одна над другой. Её можно построить, изменяя толщину и положение столбцов. На следующей столбчатой диаграмме показано количество студентов, поступивших на инженерный факультет:
import numpy as np
import matplotlib.pyplot as plt
# set width of bar
barWidth = 0.25
fig = plt.subplots(figsize =(12, 8))
# set height of bar
IT = [12, 30, 1, 8, 22]
ECE = [28, 6, 16, 5, 10]
CSE = [29, 3, 24, 25, 17]
# Set position of bar on X axis
br1 = np.arange(len(IT))
br2 = [x + barWidth for x in br1]
br3 = [x + barWidth for x in br2]
# Make the plot
plt.bar(br1, IT, color ='r', width = barWidth,
edgecolor ='grey', label ='IT')
plt.bar(br2, ECE, color ='g', width = barWidth,
edgecolor ='grey', label ='ECE')
plt.bar(br3, CSE, color ='b', width = barWidth,
edgecolor ='grey', label ='CSE')
# Adding Xticks
plt.xlabel('Branch', fontweight ='bold', fontsize = 15)
plt.ylabel('Students passed', fontweight ='bold', fontsize = 15)
plt.xticks([r + barWidth for r in range(len(IT))],
['2015', '2016', '2017', '2018', '2019'])
plt.legend()
plt.show()
Вывод:
Сложенный столбчатый график
Сложенные столбчатые диаграммы отображают различные группы, расположенные друг над другом. Высота столбца зависит от итоговой высоты комбинации результатов групп. Она увеличивается от нижней части к значению, а не от нуля к значению. На следующем столбчатом графике представлен вклад мальчиков и девочек в команду.
import numpy as np
import matplotlib.pyplot as plt
N = 5
boys = (20, 35, 30, 35, 27)
girls = (25, 32, 34, 20, 25)
boyStd = (2, 3, 4, 1, 2)
girlStd = (3, 5, 2, 3, 3)
ind = np.arange(N)
width = 0.35
fig = plt.subplots(figsize =(10, 7))
p1 = plt.bar(ind, boys, width, yerr = boyStd)
p2 = plt.bar(ind, girls, width,
bottom = boys, yerr = girlStd)
plt.ylabel('Contribution')
plt.title('Contribution by the teams')
plt.xticks(ind, ('T1', 'T2', 'T3', 'T4', 'T5'))
plt.yticks(np.arange(0, 81, 10))
plt.legend((p1[0], p2[0]), ('boys', 'girls'))
plt.show()
Вывод: