1. ホーム
  2. matplotlib

matplotlib を使って折れ線グラフ、棒グラフ、混合棒グラフを描画する

2022-02-25 05:08:50
<パス

記事目次

matplotlibの紹介

  • Matplotlib は、Python用のグラフ描画ライブラリです。以下の機能を備えています。 NumPy を提供し、効率的な MatLab オープンソースの代替品です。また、以下のようなグラフィックツールキットと組み合わせて使用することもできます。 PyQt wxPython .
  • Matplotlib ライブラリをインストールするコマンドです。cmd コマンドウィンドウで次のように入力します。 pip install matplotlib .

matplotlib は折れ線グラフを描画する

  1. 折れ線グラフをプロットする
# -*- coding:utf-8 -*-
import matplotlib
import matplotlib.pyplot as plt
# Handle garbled code
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # display Chinese in bold
x = [1, 2, 3, 4]
y = [10, 50, 20, 100]
# "r" means red, ms used to set the size of *
plt.plot(x, y, "r", marker='*', ms=10, label="a")
# plt.plot([1, 2, 3, 4], [20, 30, 80, 40], label="b")
plt.xticks(rotation=45)
plt.xlabel("release date")
plt.ylabel("Number of novels")
plt.title("80novels.com activity")
# upper left Display legend a to the upper left corner
plt.legend(loc="upper left")
# Show specific values on the line graph, ha parameter controls horizontal alignment, va controls vertical alignment
for x1, y1 in zip(x, y):
    plt.text(x1, y1 + 1, str(y1), ha='center', va='bottom', fontsize=20, rotation=0)
plt.savefig("a.jpg")
plt.show()


グラフィック効果が表示されます。

  • 注意事項 セーブフィグ () として保存されたグラフは 画像 その 表示 ()はグラフを表示することです。
  1. 複数のダッシュ線を引く
# -*- coding:utf-8 -*-
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # display Chinese in bold
x = [1, 2, 3, 4]
y1 = [45, 50, 20, 100]
y2 = [26, 10, 76, 25]
y3 = [11, 66, 55, 88]
y4 = [69, 50, 35, 100]
plt.plot(x, y1, marker='*', ms=10, label="a")
plt.plot(x, y2, marker='*', ms=10, label="b")
plt.plot(x, y3, marker='*', ms=10, label="c")
plt.plot(x, y4, marker='*', ms=10, label="d")
plt.xticks(rotation=45)
plt.xlabel("release date")
plt.ylabel("Number of novels")
plt.title("80novels.com activity")
plt.legend(loc="upper left")
# Show specific values on the line graph, ha parameter controls horizontal alignment, va controls vertical alignment
for y in [y1, y2, y3, y4]:
    for x1, yy in zip(x, y):
        plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0)
plt.savefig("a.jpg")
plt.show()


グラフィック効果が表示されます。

matplotlib が棒グラフを描画する

  1. 通常の棒グラフをプロットする
# -*- coding:utf-8 -*-
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # display Chinese in bold
# Construct the data
x = [1, 2, 3, 4]
y = [450, 500, 200, 1000]
# Plot
plt.bar(x=x, height=y, label='Book Library Book', color='steelblue', alpha=0.8)
# Show specific values on the bar, ha parameter controls horizontal alignment, va controls vertical alignment
for x1, yy in zip(x, y):
    plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0)
# Set the title
plt.title("80novel.com active")
# Set the names for the two axes
plt.xlabel("Release date")
plt.ylabel("Number of novels")
# Show legend
plt.legend()
plt.savefig("a.jpg")
plt.show()


グラフィック効果が表示されます。

  1. 複数セットの棒グラフをプロットする
# -*- coding:utf-8 -*-
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # display Chinese in bold
# Construct the data
x = ['2015', '2016', '2017', '2018', '2019']
y1 = [4500, 5000, 2000, 7000, 10000]
y2 = [5200, 7000, 5000, 9000, 11000]
# Plot
plt.bar(x=x, height=y1, label='python', color='steelblue', alpha=0.8)
plt.bar(x=x, height=y2, label='java', color='indianred', alpha=0.8)
# Show specific values on the bar, ha parameter controls horizontal alignment, va controls vertical alignment
for x1, yy in zip(x, y1):
    plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0)
for x1, yy in zip(x, y2):
    plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0)
# Set the title
plt.title("python vs java book comparison")
# Set names for both axes
plt.xlabel("year")
plt.ylabel("sales")
# Show legend
plt.legend()
plt.savefig("a.jpg")
plt.show()


グラフィック効果が表示されます。

  1. 棒グラフの棒を横に並べてプロットする
# -*- coding:utf-8 -*-
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # display Chinese in bold
# Construct the data
x = ['2015', '2016', '2017', '2018', '2019']
y1 = [4500, 5000, 2000, 7000, 10000]
y2 = [5200, 7000, 5000, 9000, 11000]
bar_width = 0.3
# Change the x-axis data to use range(len(x_data), which is 0, 1, 2...
plt.bar(x=range(len(x)), height=y1, label='python', color='steelblue', alpha=0.8, width=bar_width)
# Change the x-axis data to use np.range(len(x_data))+bar_width,
# That's bar_width, 1+bar_width, 2+bar_width... This juxtaposes with the first bar chart
plt.bar(x=np.range(len(x)) + bar_width, height=y2, label='java', color='indianred', alpha=0.8, width=bar_width)
# Display specific values on the bar chart, ha parameter controls horizontal alignment, va controls vertical alignment
for x1, yy in enumerate(y1):
    plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0)
for x1, yy in enumerate(y2):
    plt.text(x1 + bar_width, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0)
# Set the title
plt.title("python vs. java")
# Set names for the two axes
plt.xlabel("year")
plt.ylabel("sales")
# Show legend
plt.legend()
plt.savefig("a.jpg")
plt.show()



効果をグラフィカルに表示します。

matplotlib は混合棒グラフを描画します。

  1. 列線混合プロットを行う
# -*- coding:utf-8 -*-
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # display Chinese in bold
# Construct the data
x = [2, 4, 6, 8]
y = [450, 500, 200, 1000]
# Plot
plt.bar(x=x, height=y, label='Book Library Book', color='steelblue', alpha=0.8)
# Show specific values on the bar, ha parameter controls horizontal alignment, va controls vertical alignment
for x1, yy in zip(x, y):
    plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0)
# Set the title
plt.title("80novel.com active")
# Set the names for the two axes
plt.xlabel("Release date")
plt.ylabel("Number of novels")
# Show legend
plt.legend()
# Draw a line graph
plt.plot(x, y, "r", marker='*', ms=10, label="a")
plt.xticks(rotation=45)
plt.legend(loc="upper left")
plt.savefig("a.jpg")
plt.show()


グラフィック効果が表示されます。