Python matplotlibでグラフを作る(超初心者向け)-2

ハッチング
Python matplotlib 説明図を書いてみる
@damyarouさん
https://qiita.com/damyarou/items/eafcf27aa1a7852d32e9
を参考にさせていただきました。(わかりにくかったので、少し修正しました。)

hatching.py
import matplotlib.pyplot as plt

x1 = -0.5
x2 = 5.5
x3 = 5.5
x4 = -0.5

plt.fill([x1,x2,x3,x4],[-0.5,-0.5,4.5,4.5],fill=False, hatch='//',lw=0)  #ハッチング([x1,x2,x3,x4],[y1,y2,y3,y4])
plt.fill([0,5,5,0],[0,0,4,4],facecolor='#FFFFFF',edgecolor='#FF0000',lw=3)    #([X1,X2,X3,X4],[Y1,Y2,Y3,Y4])の範囲を塗りつぶす

plt.plot([0,5],[2,2],'-.',color='#000000',lw=1)  #中心線x [x1,x2],[y1,y2]
plt.plot([2.5,2.5],[0,4],'-.',color='#000000',lw=3)  #中心線y

plt.show()

image.png

矢印
Python matplotlib 説明図を書いてみる
@damyarouさん
を参考にさせていただきました。

arrow.py
import matplotlib.pyplot as plt

x1=0.1;x2=x1;y1=0.1; y2=0.7; sv=0

plt.annotate('',
    xy=(x1,y1), xycoords='data',
    xytext=(x2,y2), textcoords='data', fontsize=0,
    arrowprops=dict(shrink=sv,width=1,headwidth=5,headlength=8,
        connectionstyle='arc3',facecolor='#000000',edgecolor='#000000'))

plt.show()

矢印.png

データの座標を直接与えてグラフを作成する

graph.py
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = np.arange(3)
X, Y = np.meshgrid(x,y)

X = np.array([[0, 1, 2, 3, 4],
           [0.2, 0.8, 2.2, 3.2, 3.8],
           [0, 1, 2, 3, 4]])

Y = np.array([[0, 0.4, 0.6, 0.8, 1],
           [1.5, 1.2, 1.3, 1.4, 1.5],
           [2, 2, 2, 2, 2]])

plt.plot(X, Y)

plt.show()

graph-1.png

地震マップに使うようなグラフ(震源地と震度等)

graph.py
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(5)
y = np.arange(3)
s = np.arange(3)
X, Y, S = np.meshgrid(x,y,s)

X = np.array([[0, 1, 2, 3, 4],
           [0.2, 0.8, 2.2, 3.2, 3.8],
           [0, 1, 2, 3, 4]])

Y = np.array([[0, 0.4, 0.6, 0.8, 1],
           [1.5, 1.2, 1.3, 1.4, 1.5],
           [2, 2, 2, 2, 2]])

S = np.array([[8, 30, 10, 100, 20],
           [15, 5, 50, 20, 8],
           [6, 40, 10, 20, 22]])


plt.scatter(X, Y, s=S, alpha=0.5)
plt.show()

震源地と震度.png

グラフの凡例

graph.py
#グラフ y=x^2
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-5, 5, 100, endpoint=True)  #x座標の-5〜5まで表示、配列の要素数、endpoint=True(終点を含む)

y = x ** 2
y1 = x + 3

plt.plot([-5,5],[0,0],'-',color='#000000',lw=1)  #x軸
plt.plot([0,0],[-5,25],'-',color='#000000',lw=1)  #y軸

plt.plot(x, y, color="red", linewidth=2.5, linestyle="-", label="y=x^2")  #label=グラフの凡例
plt.plot(x, y1, color="blue", linewidth=2.5, linestyle="-", label="y=x+3")

plt.legend(loc='upper left')  #グラフの凡例の表示位置
#plt.legend()  #グラフの凡例を右上に表示

plt.title('Graph')  #タイトル
plt.xlabel('X-Axis')  #グラフの軸の名称
plt.ylabel('Y-Axis')
#plt.axis([-5, 5, -5, 25])  #グラフの範囲(有効にすると上下左右の空白の部分がなくなる)

plt.show()
グラフをpngイメージで作成する

上記のプログラムの「plt.show()」を
plt.savefig('png_graph.png', dpi=300, orientation='portrait', transparent=False, pad_inches=0.0)
に置き換えると、グラフウインドウの代わりにグラフのpngイメージが作成される。

グラフをpdfファイルで作成する

plt.savefig('pdf_graph.pdf', orientation='portrait', transparent=False, bbox_inches=None, frameon=None)
に置き換えると、グラフウインドウの代わりにグラフのpdfファイルが作成される。

グラフウインドウとpng・pdfファイルを同時に作成する時は、グラフウインドウを先に記述する。

image.png

Python matplotlibでグラフを作る(超初心者向け)-1
https://qiita.com/ty21ky/items/5374dec69df08584bc35

参考
サンプルプログラムが沢山あります。
https://matplotlib.org/xkcd/examples/index.html
https://matplotlib.org/gallery/index.html

MATPLOTLIB
https://matplotlib.org/xkcd/api/pyplot_api.html?highlight=plot#matplotlib.pyplot.plot

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.