Bar гистограмма



Download 143,65 Kb.
Sana14.04.2022
Hajmi143,65 Kb.
#551061

Bar - гистограмма
Гистограммы устроены очень просто, но изменяя различные параметры мы можем отобразить с их помощью очень много информации, а так же повысить как наглядность данных так и привлекательность самого графика.
Ширина прямоугольников
Чаще всего мы строим гистограммы из одиночных наборов данных, в таких случаях мы можем обойтись, вообще, без каких бы то ни было изменений графика. Просто строим одну или несколько гистограмм на одной области Figure:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


y = np.random.randint(1, 20, size = 7)

fig, ax = plt.subplots()

ax.bar(x, y)

ax.set_facecolor('seashell')


fig.set_facecolor('floralwhite')
fig.set_figwidth(12) # ширина Figure
fig.set_figheight(6) # высота Figure

plt.show()



%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x1 = np.arange(1, 8)


y1 = np.random.randint(1, 20, size = 7)
x2 = np.arange(1, 101)
y2 = np.random.randint(1, 20, size = 100)

fig, axes = plt.subplots(2, 1)

axes[0].bar(x1, y1)
axes[1].bar(x2, y2)

axes[0].set_facecolor('seashell')


axes[1].set_facecolor('seashell')
fig.set_facecolor('floralwhite')
fig.set_figwidth(12) # ширина Figure
fig.set_figheight(6) # высота Figure

plt.show()



Ширина прямоугольников подбирается автоматически и нас это, вполне, устраивает. Но если мы имеем дело с несколькими наборами данных, которые нужно отобразить в пределах одной области Axes, то прямоугольники начинают перекрывать друг друга:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


y1 = np.random.randint(1, 10, size = 7)
y2 = np.random.randint(1, 10, size = 7)

fig, ax = plt.subplots()

ax.bar(x, y1)
ax.bar(x, y2)

ax.set_facecolor('seashell')


fig.set_figwidth(12) # ширина Figure
fig.set_figheight(6) # высота Figure
fig.set_facecolor('floralwhite')

plt.show()



В таких случаях, нам необходимо вручную задавать ширину с помощью параметра width и смещение прямоугольников в массиве x:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

# Задаем смещение равное половине ширины прямоугольника:


x1 = np.arange(1, 8) - 0.2
x2 = np.arange(1, 8) + 0.2
y1 = np.random.randint(1, 10, size = 7)
y2 = np.random.randint(1, 10, size = 7)

fig, ax = plt.subplots()

ax.bar(x1, y1, width = 0.4)
ax.bar(x2, y2, width = 0.4)

ax.set_facecolor('seashell')


fig.set_figwidth(12) # ширина Figure
fig.set_figheight(6) # высота Figure
fig.set_facecolor('floralwhite')

plt.show()



В некоторых ситуациях ширина прямоугольников, так же как и их высота, может быть пропорциональна некоторой величине. Что бы задать ширину каждого отдельного прямоугольника можно указать параметр width в виде массива чисел:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


y = np.random.randint(1, 10, size = 7)

fig, ax = plt.subplots()

width_rectangle = np.random.rand(7)
ax.bar(x, y, width = width_rectangle)

fig.set_figwidth(12) # ширина и


fig.set_figheight(6) # высота "Figure"
fig.set_facecolor('floralwhite')
ax.set_facecolor('seashell')

plt.show()



РЕКЛАМА
Выравнивание нижнего края прямоугольников
Разместить несколько гистограмм на одной области Axes можно не только с помощью горизонтального смещения и изменения ширины прямоугольников, но и с помощью параметра bottom, который задает значение по которому выравнивается нижний край прямоугольников:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


y1 = np.random.randint(1, 10, size = 7)
y2 = np.random.randint(1, 10, size = 7)
y3 = np.random.randint(1, 10, size = 7)

fig, ax = plt.subplots()

ax.bar(x, y1)
ax.bar(x, y2, bottom = 11)
ax.bar(x, y3, bottom = 21)

fig.set_figwidth(12) # ширина и


fig.set_figheight(6) # высота "Figure"
fig.set_facecolor('floralwhite')
ax.set_facecolor('seashell')

plt.show()



Выравнивание для каждого прямоугольника можно задать с помощью массива:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 51)


y = np.random.randint(1, 50, size = 50)

fig, ax = plt.subplots()

bottom_rectangle = np.random.randint(30, size = 50)
ax.bar(x, y, bottom = bottom_rectangle)

fig.set_figwidth(12) # ширина и


fig.set_figheight(6) # высота "Figure"
fig.set_facecolor('floralwhite')
ax.set_facecolor('seashell')

plt.show()



Для того что бы состыковать прямоугольники нескольких наборов данных, достаточно выровнять одни прямоугольники по значениям других:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


data_1 = np.random.randint(2, 15, size = 7)
data_2 = np.random.randint(3, 20, size = 7)

fig, ax = plt.subplots()

ax.bar(x, data_1)
ax.bar(x, data_2, bottom = data_1)

fig.set_figwidth(12) # ширина и


fig.set_figheight(6) # высота "Figure"
fig.set_facecolor('floralwhite')
ax.set_facecolor('seashell')

plt.show()



Цвет
Для того что бы задать цвет всех прямоугольников достаточно указать его в параметре color:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


y = np.random.randint(1, 10, size = 7)

fig, ax = plt.subplots()

ax.bar(x, y, color = 'red')

fig.set_figwidth(12) # ширина и


fig.set_figheight(6) # высота "Figure"
fig.set_facecolor('floralwhite')
ax.set_facecolor('seashell')

plt.show()



Так же возможно задать цвет каждого отдельного прямоугольника, указав в параметре color массив цветов:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


y = np.random.randint(1, 10, size = 7)

fig, ax = plt.subplots()

color_rectangle = np.random.rand(7, 3) # RGB
ax.bar(x, y, color = color_rectangle)

fig.set_figwidth(12) # ширина и


fig.set_figheight(6) # высота "Figure"
fig.set_facecolor('floralwhite')
ax.set_facecolor('seashell')

plt.show()



Не забывайте, что matplotlib поддерживает разные цветовые модели и форматы. Задавая цвет в модели RGBA вы можете контролировать прозрачность прямоугольников, что так же позволяет размещать несколько наборов данных, но без смещения:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


y1 = np.random.randint(1, 10, size = 7)
y2 = np.random.randint(1, 10, size = 7)

fig, ax = plt.subplots()

color_rectangle = np.random.rand(7, 3) # RGB
ax.bar(x, y1, color = color_rectangle, width = 0.5)

color_rectangle = np.random.rand(7, 4) # RGBA


color_rectangle[:,3] = 0.5
ax.bar(x, y2, color = color_rectangle)

fig.set_figwidth(12) # ширина и


fig.set_figheight(6) # высота "Figure"
fig.set_facecolor('floralwhite')
ax.set_facecolor('seashell')

plt.show()



Если вам необходимо выделить границу прямоугольников, то вы можете задать ее цвет (edgecolor) и толщину (linewidth):
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


y = np.random.randint(1, 10, size = 7)

fig, ax = plt.subplots()

ax.bar(x, y,
color = 'chartreuse',
edgecolor = 'darkblue',
linewidth = 5)

fig.set_figwidth(12) # ширина и


fig.set_figheight(6) # высота "Figure"
ax.set_facecolor('darkslateblue')

plt.show()



РЕКЛАМА
Отображение погрешности
На гистограммах можно указывать погрешность измерения величины, как по горизонтали (xerr) так и вертикали (xerr):
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


y = np.random.randint(1, 10, size = 7)

fig, axes = plt.subplots(2, 1)

x_error = np.random.rand(7)
axes[0].bar(x, y,
xerr = x_error,
width = 0.3)

y_error = np.random.rand(7)*2


axes[1].bar(x, y,
yerr = y_error,
width = 0.5)

fig.set_figwidth(12) # ширина и


fig.set_figheight(6) # высота "Figure"
fig.set_facecolor('floralwhite')
axes[0].set_facecolor('seashell')
axes[1].set_facecolor('seashell')

plt.show()



Одно число задает одинаковую погрешность, массив чисел длинной x задает разную но симметричную погрешность для каждого прямоугольника, а массив чисел с формой (2, x) задает минимальное и максимальное значение погрешности для каждого прямоугольника:
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 13)


y = np.random.randint(5, 20, size = 12)

fig, axes = plt.subplots(3, 1)

axes[0].bar(x, y, yerr = 1)

y_error = np.random.rand(12)*5


axes[1].bar(x, y,
yerr = y_error)

y_error = np.random.rand(2,12)*10


y_error[:][0] /= 2
axes[2].bar(x, y,
yerr = y_error)

axes[0].set_title('Одинаковая погрешность')


axes[1].set_title('Разная, но симметричная погрешность')
axes[2].set_title('Максимальная и минимальная погрешность')
axes[0].set_xticks([])
axes[1].set_xticks([])
axes[0].set_facecolor('seashell')
axes[1].set_facecolor('seashell')
axes[2].set_facecolor('seashell')
fig.set_figwidth(12) # ширина и
fig.set_figheight(9) # высота "Figure"
fig.set_facecolor('floralwhite')

plt.show()



Линии погрешности так же можно видоизменять:
# Горизонтальная ошибка
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 8)


y = np.random.randint(1, 10, size = 7)

fig, ax = plt.subplots()

y_error = np.random.randint(5, 20, size = (2, 7))/15
ax.bar(x, y,
yerr = y_error, # границы погрешностей
ecolor = 'darkred', # цвет линии погрешности
capsize = 10, # горизонтальная черточка
edgecolor = 'red', # цвет края прямоугольника
linewidth = 2, # ширина крайней линии
color = 'seashell', # цвет прямоугольника
linestyle = '--') # начертание линии

fig.set_figwidth(12) # ширина и


fig.set_figheight(6) # высота "Figure"
fig.set_facecolor('floralwhite')
ax.set_facecolor('seashell')

plt.show()



Download 143,65 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish