棒グラフ
# coding: utf-8
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
import japanize_matplotlib # matplotlibで日本語の文字化けが起きないようにする。
import numpy as np
import matplotlib.pyplot as plt
labels = ['G1', 'G2', 'G3', 'G4', 'G5']
men_means = [20, 35, 30, 35, 27]
women_means = [25, 32, 34, 20, 25]
men_std = [2, 3, 4, 1, 2]
women_std = [3, 5, 2, 3, 3]
width = 0.35 # 棒の幅
fig, ax = plt.subplots()
ax.bar(labels, men_means, width, yerr=men_std, label='男')
ax.bar(labels, women_means, width, yerr=women_std, bottom=men_means,
label='女')
ax.set_ylabel('点数')
ax.set_title('グループと性別別の点数')
ax.legend()
plt.show()
円グラフ
import matplotlib.pyplot as plt
# startangleから反時計回りにプロットされる
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0) # 2番目だけにexplode(突出)がある
fig1, ax1 = plt.subplots() subplotsを使用している
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
ax1.axis('equal')
plt.show()
fig, ax = plt.subplots()
size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])
cmap = plt.get_cmap("tab20c")
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap(np.array([1, 2, 5, 6, 9, 10]))
ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
wedgeprops=dict(width=size, edgecolor='w'))
ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
wedgeprops=dict(width=size, edgecolor='w'))
ax.set(aspect="equal", title='Pie plot with `ax.pie`')
plt.show()
箱ひげ図
import matplotlib.pyplot as plt
import numpy as np
# Random test data
np.random.seed(19680801)
all_data = [np.random.normal(0, std, size=100) for std in range(1, 4)]
labels = ['x1', 'x2', 'x3']
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(9, 4))
# rectangular box plot
bplot1 = ax1.boxplot(all_data,
vert=True, # vertical box alignment
patch_artist=True, # fill with color
labels=labels) # will be used to label x-ticks
ax1.set_title('Rectangular box plot')
# notch shape box plot
bplot2 = ax2.boxplot(all_data,
notch=True, # notch shape
vert=True, # vertical box alignment
patch_artist=True, # fill with color
labels=labels) # will be used to label x-ticks
ax2.set_title('Notched box plot')
# fill with colors
colors = ['pink', 'lightblue', 'lightgreen']
for bplot in (bplot1, bplot2):
for patch, color in zip(bplot['boxes'], colors):
patch.set_facecolor(color)
# adding horizontal grid lines
for ax in [ax1, ax2]:
ax.yaxis.grid(True)
ax.set_xlabel('Three separate samples')
ax.set_ylabel('Observed values')
plt.show()
実は上記に紹介されているグラフの例はmatplotlib galleryというサイトからコピーしてきたものである。
urlを下記しておく。説明は英語で書かれているので注意。
Examples — Matplotlib 3.10.0 documentation
図で表現したいデータがあって、どのグラフで表現すればよいか悩むときにはmatplotlib galleryで例を探してそのコードを活用するとよい。
コメント