事務屋さんの備忘録

主にプログラミングのことを書いていきます。メモというか備忘録的な感じで。プログラミングといっても、私はプロのエンジニアでも本職のプログラマーでもありません。単なる事務職をやってるサラリーマンで、空いた時間にちょこちょこっとプログラミングしてる程度です。よってこのブログに記載したことが誤っていたり、もっとよい方法がある場合もあると思います。その場合には、ご指摘いただけると嬉しいです。また、このブログを読んで役に立った、なんて方がいらっしゃったら幸いですね。

Python 基礎 グラフ

メモ。グラフいろいろ。

#グラフ
import matplotlib.pyplot as plt  #matplotlib.pyplotモジュールの読み込み
data=[2, 2.3, 4.1, 2.4, 5.3, 3.2, 4.6]  #グラフ化するデータ
plt.plot(data)  #グラフを書く
plt.show()  #グラフを表示する
# x軸の要素はインデックス番号になります



#x軸, y軸を指定
import matplotlib.pyplot as plt
price=[200,300,400,500,600]
count=[31,29,25,28,26]
plt.plot(price,count)  #(x軸 price, y軸 count)
plt.show()


#タイトルと軸ラベルを付ける
import matplotlib.pyplot as plt
price=[200,300,400,500,600]
count=[31,29,25,28,26]
plt.plot(price,count)  #(x軸 price, y軸 count)

plt.title("count - price")
plt.xlabel("price")
plt.ylabel("count")

#日本語だとIPythonコンソールだと文字化け
#plt.title("個数 - 価格")
#plt.xlabel("価格")
#plt.ylabel("個数")

plt.show()


#グリッドとマーカーを表示する
import matplotlib.pyplot as plt
price=[200,300,400,500,600]
count=[31,29,25,28,26]
plt.plot(price,count,marker="o")  #(x軸 price, y軸 count) marker="o" 小文字のオー

plt.title("count - price")
plt.xlabel("price")
plt.ylabel("count")

plt.grid(True) #グリッド表示
plt.show()


#Sinグラフを描く
import matplotlib.pyplot as plt
import math
X=range(0,360) #x軸の値
Y=[math.sin(math.radians(d)) for d in X] #y軸の値
plt.plot(X,Y) #グラフを書く 折れ線グラフの書き方と同じ

plt.savefig("sin.png") #グラフ画像を保存する

plt.show() #表示する


#複数のグラフを重ねる
import matplotlib.pyplot as plt
import math
X=range(0,360) #x軸の値
S=[math.sin(math.radians(d)) for d in X] #sin の値
C=[math.cos(math.radians(d)) for d in X] #cos の値
plt.plot(X,S) #sinグラフを書く
plt.plot(X,C) #cosグラフを書く
plt.show() #表示する


#折れ線やマーカーを違う種類に
import matplotlib.pyplot as plt
X=[100,200,300,400,500]
Y1=[40,65,80,100,90]
Y2=[34,56,75,91,79]
Y3=[25,47,68,76,73]
Y4=[15,40,52,64,69]

plt.plot(X,Y1,marker="o",color="blue",linestyle="-",label="Y1")
plt.plot(X,Y2,marker="v",color="red",linestyle="--",label="Y2")
plt.plot(X,Y3,marker="^",color="green",linestyle="-.",label="Y3")
plt.plot(X,Y4,marker="d",color="m",linestyle=":",label="Y4")

plt.legend(loc="upper left") #凡例を作る グラフの左上に表示

plt.show()


#縦棒グラフ
import matplotlib.pyplot as plt
labels=["A","B","C","D","E","F","G","H","I","J"]
x_pos=range(0,10) #0~9
V=[91,45,17,88,47,87,49,56,67,77]
plt.bar(x_pos,V,tick_label=labels) #縦棒グラフを書く X軸に表示するグラフのラベルを表示します
plt.show()


#横棒グラフ
import matplotlib.pyplot as plt
labels=["A","B","C","D","E"]
y_pos=range(0,5)
V=[91,45,17,88,47]
plt.barh(y_pos,V,tick_label=labels) #横棒グラフを書く 軸に表示するグラフのラベルを表示します 
plt.show()


#積み上げ棒グラフ
import matplotlib.pyplot as plt
labels=["Green","Red","Yellow","Blue","Black","White"]
x_pos=range(0,6)
A=[34,46,54,45,56,37]
B=[17,47,55,67,38,49]
bar1=plt.bar(x_pos,A,color="g") #グラフAを書く
bar2=plt.bar(x_pos,B,color="c",bottom=A) #グラフを書く bottom=A→グラフAに積み上げます
plt.xticks(x_pos,labels,rotation="vertical")
plt.legend((bar1,bar2),("man","woman"),loc="upper right")
plt.show()


#散布図
import matplotlib.pyplot as plt
X=[91,45,17,88,47,87,49,56,67,23,86,20,60,67,30,41,91,55,37,14]
Y=[39,17,45,32,20,14,11,48,41,13,21,40,13,14,11,40,21,18,50,25]
plt.scatter(X,Y) #グラフを描く
plt.show()


#散布図 マーカーの種類を色を設定
import matplotlib.pyplot as plt
X1=[91,45,17,88,47,87,49,56,67,23,86,20,60,67,30,41,91,55,37,14]
Y1=[39,17,45,32,20,14,11,48,41,13,21,40,13,14,11,40,21,18,50,25]
X2=[97,98,33,93,59,63,30,48,88,56,91,65,69,66,67,92,96,59,49,34]
Y2=[62,77,60,57,46,45,49,57,60,54,53,72,46,72,59,76,67,49,42,42]
plt.scatter(X1,Y1,marker="+",color="red")
plt.scatter(X2,Y2,marker="^",color="green")
plt.show()


#散布図 マーカーのサイズと透明度
import matplotlib.pyplot as plt
import numpy as np
X,Y=np.random.rand(100),np.random.rand(100) #rand(100) 0~1が入った100個の配列を作成

#s=500  マーカーのサイズ(初期値20)
#alpha=0.5 透明度(0~1)
#linewidths=2  線幅
#edgecolors="b" マーカーの線の色
plt.scatter(X,Y,marker="o",s=500,color="cyan",alpha=0.5,
            linewidths=2,edgecolors="b")
plt.show()


#散布図 マーカーの大きさで表現する
import matplotlib.pyplot as plt
import numpy as np
X,Y=np.random.rand(100),np.random.rand(100)
V=np.random.rand(100) * 1000 + 50  #サイズを決めるデータの配列
plt.scatter(X,Y,s=V,c="b",alpha=0.3,linewidths=1,edgecolors="b")
plt.show()


#散布図 値に応じてマーカーの色を変える
import matplotlib.pyplot as plt
import numpy as np
X,Y=np.random.rand(100),np.random.rand(100)
V=np.random.rand(100) #色の濃淡を決めるデータの配列
plt.scatter(X,Y,s=200,c=V,cmap="Blues",edgecolors="b") #cmap="" カラーマップで塗色を決めます
plt.colorbar() #カラーバーを表示する
plt.grid(True) #グリッドを表示する
plt.show()


#円グラフ
import matplotlib.pyplot as plt
labels=["E","D","C","B","A"] #ラベル(反時計回り)
V=[17,25,47,68,91] #値(反時計回り)
ex=[0,0,0,0.1,0] #パイのきりだし
plt.pie(V,explode=ex,labels=labels,autopct='%1.1f%%',startangle=90)
plt.show()