Pythonデータの可視化はMatplotlibで常用図形を描きます。


一、散点図
散点図は2組のデータで複数の座標点を構成し、座標点の分布を調べ、両変数の間に何らかの関連があるか、あるいは座標点の分布パターンをまとめているかを判断する。
特徴:変数間に数量関連の傾向があるかどうかを判断し、群から離れる点の分布法則を表します。
散点図の描画:
plt.scater(x,y)〓はデフォルトの形の色で散点図を描きます。
たとえば、上海で2020年5、10月の日中の最高気温(それぞれリストa、b)を獲得したとします。この時、気温と時間によって変化するある法則をどのように観察しますか?

#          
y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]
y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]
コードは以下の通りです

import matplotlib.pyplot as plt

#     
plt.rcParams['font.sans-serif']=['SimHei'] #   sans_serif  
plt.rcParams['axes.unicode_minus']=False #               

plt.figure(figsize=(12,5), dpi=100)

y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]
y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]
x = range(1, 32)

plt.scatter(x, y_5, label='   ')
plt.scatter(x, y_10, label='   ')

#     ,    
plt.xlabel("  ")
plt.ylabel("  ")
plt.title("             ")

#       
plt.legend(loc='best')

plt.show()
在这里插入图片描述
上の図は5、10月の気温は日付によって変化しますが、両者が混ざっていて、観察には不便です。現在はXデータを修正して、10月の座標点集団を座標軸の右側に移動します。

import matplotlib.pyplot as plt

#     
plt.rcParams['font.sans-serif']=['SimHei'] #   sans_serif  
plt.rcParams['axes.unicode_minus']=False #               

plt.figure(figsize=(12,5), dpi=100)

y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]
y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]
x_5 = range(1, 32)
x_10 = range(33, 64)

plt.scatter(x_5, y_5, label='   ')
plt.scatter(x_10, y_10, label='   ')

#     
x_t = list(x_4)+list(x_10)
x_l = ["5 {} ".format(i) for i in x_4]
x_l += ["10 {} ".format(i-31) for i in x_10]
plt.xticks(x_t[::3], x_l[::3], rotation=45)

#       
plt.legend(loc='best')

plt.show()
在这里插入图片描述
二、ヒストグラム
ヒストグラムは、幅が同じ棒形の高さや長さでデータの数を表すグラフです。棒グラフは横に置くか縦に置くか、縦に置くときは棒グラフともいいます。
特徴:
各データのサイズを直感的に反映することができます。
データ間の違いを比較しやすい。
ヒストグラムの描画:
plt.bar(x,width,align=‘センター’,*kwargs)

Parameters:    
x : sequence of scalars.

width : scalar or array-like, optional,       

align: {‘center', ‘edge'}, optional, default: ‘center'
Alignment of the bars to the x coordinates:
‘center': Center the base on the x positions.
‘edge': Align the left edges of the bars with the x positions.
            ,          x      

**kwargs:
color:         
横棒の描画
plt.barh(y,width)菷はy軸位置の水平棒グラフを描いています。
例:2019年の大陆映画兴行上位20の映画(リストa)と映画兴行データ(リストb)を取得したと仮定して、ヒストグラムを描いてデータを直観的に示す。コードは以下の通りである。

import matplotlib.pyplot as plt
#     
plt.rcParams['font.sans-serif']=['SimHei'] #   sans_serif  
plt.rcParams['axes.unicode_minus']=False #               

plt.figure(figsize=(15,10),dpi=100)
#                 
movie_name = ["    ","     4:    ","       ","      ",
              "    ","   :    ","  2    ","    ","   ",
              "    ","         ","   2:    ","   :    ",
              "     ","   ","    4","   ","      ","     ",
              "    2:    ","    "]
y = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,
11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22]
#           
x = range(len(movie_name))

#      
#   color            ,   
plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g','g'])

#       ,   90 
plt.xticks(x, movie_name, rotation=90)

#     
plt.show()
在这里插入图片描述

#      
plt.figure(figsize=(15,10),dpi=100)
plt.barh(movie_name, y, color=['b','r','g','y','c','m','k'])
plt.show()
在这里插入图片描述
公平のためには、映画の初日と初週の興行収入を比べて、データを説得する必要がある。仮説データは以下の通りです。

movie_name = ['  3:    ','    ','     ']
first_day = [10587.6,10062.5,1275.7] #     
first_weekend=[36224.9,34479.6,11830] #     
異なる映画の初日と初週の興行収入のデータ図を描きます。コードは以下の通りです。

import matplotlib.pyplot as plt
#     
plt.rcParams['font.sans-serif']=['SimHei'] #   sans_serif  
plt.rcParams['axes.unicode_minus']=False #               

plt.figure(figsize=(15,10),dpi=100)
#     
movie_name = ['  3:    ','    ','     ']

#       ,      
first_day = [10587.6,10062.5,1275.7]
first_weekend=[36224.9,34479.6,11830]
x = range(len(movie_name))

#         
plt.bar(x, first_day, width=0.25)
#           
plt.bar([i+0.25 for i in x], first_weekend, width=0.25)

#       
#   x   ,             
plt.xticks([i+0.125 for i in x], movie_name)

plt.show()
在这里插入图片描述
注意点:
x軸座標目盛表示位置の調整は、図形描画時にxデータを調整したり、x軸目盛を描く時に目盛を調整する方法で、x軸目盛を二つのヒストグラムの中間に表示することができます。調整が行われていない場合は、最初のヒストグラムとの間にデフォルトで配置されます。
三、ヒストグラム
ヒストグラム、形状はヒストグラムに似ていますが、ヒストグラムとは全く違った意味があります。ヒストグラムは統計学の概念に関連しています。まずデータをグループ化して、各グループ内のデータ要素の数を統計します。座標系では、横軸は各グループの端点を示し、縦軸は周波数を表し、各矩形の高は対応する周波数を表し、このような統計図を周波数分布のヒストグラムと呼ぶ。
特徴:連続性のデータを描画し、統計データ分布の特徴として、一組または複数組のデータの分布を示します。
関連概念:
グループ数:データを統計する時、データを異なった範囲によっていくつかのグループに分けて、分けたグループの個数をグループ数と呼びます。
グループ間隔:各グループの2つのエンドポイントの差。
ヒストグラムの作成
plt.hist(x,bins=None)
xを数値として、binsをグループ数とし、グループ数=極差/グループ距離として描画します。
例:いくつかの映画の長さを取得したと仮定して、ヒストグラムを描いて映画を展示する時の長い分布状況を示します。コードは以下の通りです。

import matplotlib.pyplot as plt
#     
plt.rcParams['font.sans-serif']=['SimHei'] #   sans_serif  
plt.rcParams['axes.unicode_minus']=False #               

plt.figure(figsize=(15,10),dpi=100)
#     ,    
time =[131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 
       135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 
       127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 
       115,  99, 136, 126, 134,  95, 138, 117, 111, 78, 
       132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 
       126, 130,126, 130, 126, 116, 123, 106, 112, 138, 
       123,  86, 101,  99, 136,123, 117, 119, 105, 137, 
       123, 128, 125, 104, 109, 134, 125, 127,105, 120, 
       107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 
       114,105, 115, 132, 145, 119, 121, 112, 139, 125, 
       138, 109, 132, 134,156, 106, 117, 127, 144, 139, 
       139, 119, 140,  83, 110, 102,123,107, 143, 115, 
       136, 118, 139, 123, 112, 118, 125, 109, 119, 133, 
       112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 
       118, 112, 135,115, 146, 137, 116, 103, 144,  83, 
       123, 111, 110, 111, 100, 154,136, 100, 118, 119, 
       133, 134, 106, 129, 126, 110, 111, 109, 141, 120, 
       117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 
       125, 126,114, 140, 103, 130, 141, 117, 106, 114, 
       121, 114, 133, 137,  92,121, 112, 146,  97, 137, 
       105,  98, 117, 112,  81,  97, 139, 113,134, 106, 
       144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 
       110, 105, 129, 137, 112, 120, 113, 133, 112,  83, 
       94, 146, 133, 101, 131, 116, 111, 84, 137, 115, 
       122, 106, 144, 109, 123, 116, 111,111, 133, 150]

#   
bins = 2
#   ,  /  
groups = int((max(time) - min(time)) / 2)

#      
plt.hist(time, groups)

#   x      
plt.xticks(list(range(min(time), max(time)))[::2])

#       
plt.xlabel('      ')
plt.ylabel('     ')

#       
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()
在这里插入图片描述
四、扇形図
扇形図は、全体の円で総数を表し、各部分の数が全体の百分数を占めることを円内の各扇形の大きさで表します。
扇形図を描く
plt.pie(x,explode=None,labels=None)
x:扇形データ
explode:いくつかのブロックを設定します。円グラフを分離しますか?
labels:各扇形ラベル
autapt:パーセンテージデータラベル
show:影を表示するかどうか
plt.pie()は3つの戻り値があります。
patch:円グラフの各ブロックのオブジェクトを描く
texts:テキストのリスト
auttexts:パーセントテキストリスト
例:いくつかの映画のシリアルデータを取得したと仮定して、扇形図を描いて映画のシリアル比を示す。コードは以下の通りである。

import matplotlib.pyplot as plt
#     
plt.rcParams['font.sans-serif']=['SimHei'] #   sans_serif  
plt.rcParams['axes.unicode_minus']=False #               

#     
plt.figure(figsize=(15, 10), dpi=100)
#       
movie_name = ['  3:    ','    ','       ','     ','    ','   ','  ','    ','  ','  ','  ']
place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]

#      
plt.pie(place_count, labels=movie_name, autopct="%1.2f%%")

#      pie   
plt.axis('equal')

#        
plt.legend(loc="best")
plt.title("      ")

plt.show()
在这里插入图片描述
扇形図の最適化手段は、影を付け、特定のデータを分離するなどです。

import matplotlib.pyplot as plt
#     
plt.rcParams['font.sans-serif']=['SimHei'] #   sans_serif  
plt.rcParams['axes.unicode_minus']=False #               

plt.figure(figsize=(15, 10), dpi=100)
movie_name = ['  3:    ','    ','       ','     ','    ','   ','  ','    ','  ','  ','  ']
place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]

#      ,      ,         3  
explode = [0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
res = plt.pie(place_count, labels=movie_name, explode=explode, autopct="%1.2f%%", shadow=True)
patches, texts, autotexts = res
print(patches)  #          
print(texts)  #       
print(autotexts)  #        

#      pie   
plt.axis('equal')

#        
plt.legend(loc="best")
plt.title("      ")

plt.show()
印刷された扇形の戻り値:
在这里插入图片描述
最適化された扇形図:
在这里插入图片描述
締め括りをつける
本文はMatplotlibを用いて散点図、ヒストグラム、扇形図を描く基本的な動作を述べている。
ここでPythonデータの可視化についてMatplotlibで常用図形を描いた文章を紹介します。Matplotlibに関する絵の内容は以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。