Matplotlib は美しい円グラフを描画します | Python は美しい円グラフを描画します

Python描画シリーズの記事ディレクトリ

往期python绘图合集:
Pythonは単純な折れ線グラフを描画します
PythonはExcelでデータを読み取り、複数のサブグラフと複数のグラフグループを1つのキャンバスに描画します
Pythonはエラーバー付きのヒストグラムを描画します Pythonは
複数のサブグラフを描画し、それらを個別に表示します Pythonは
Excelデータを読み取り、複数のY軸画像を描画します
Pythonは描画しますヒストグラムを作成して美しくする | 列を異なる色で塗りつぶす
Python はデータをランダムに生成し、二重 y 軸を使用してエラーバー付きの 2 つの折れ線グラフを描画します
Python はエラーバー付きのヒストグラムを描画します データ注釈を使用したグラデーションカラー塗りつぶし (上級)
Python 描画 散布図|散乱サイズと色の濃さを数値で決定



円グラフは、全体に占める各カテゴリの割合を視覚的に表すことができる一般的なタイプのデータ視覚化です。Matplotlib は、Python で一般的に使用されるデータ視覚化ライブラリであり、円グラフを描画するためのメソッドを含む、豊富な描画ツールと関数を提供します。

この記事では、Matplotlib を使用して、複数のサブグラフと 2 つの座標軸を含む複雑な円グラフを描画する方法を紹介します。読者が円グラフを描画する方法とテクニックをすぐに習得できるように、コード例を使用して説明します。

1. Matplotlib をインストールしてインポートする

# 使用 pip 安装 Matplotlib
pip install matplotlib
# 使用 conda 安装 Matplotlib
conda install matplotlib

インストールが完了したら、通常は次の方法を使用して Matplotlib ライブラリを Python にインポートできます。

import matplotlib.pyplot as plt

2. 簡単な円グラフを描く

円グラフの基本的な描画方法をよりよく理解し、習得するために、まず簡単な例を見てみましょう。カエル、ブタ、イヌ、木の 4 つの動物があり、それぞれ動物の総数の 15%、30%、45%、10% を占めるとします。Matplotlib を使用してこの円グラフを描画し、最大から最小の順に反時計回りに並べることができます。コードは以下のように表示されます。

import matplotlib.pyplot as plt

# 各类别的标签和比例
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]

# 饼状图中各部分的颜色
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
# 绘制饼状图
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90)
# 显示图形
plt.show()

上記のコードでは、最初に 4 種類の動物のラベル変数と比率変数を定義し、それぞれの名前と比率を保存します。次に、グラフを美しくするために円グラフの各部分の色を定義しました。最後に、ラベル、色、パーセント形式、開始角度などのさまざまなパラメーターを渡す plt.pie() メソッドを使用して円グラフが描画されます。最後に、plt.show() を実行してグラフを表示します。プロットすると、単純な円グラフが作成されます。
ここに画像の説明を挿入します

3. 複雑な円グラフを描く

実際の状況では、データをより適切に表示するために、より複雑で詳細な円グラフを描画する必要がある場合があります。以下では、Matplotlib を使用して、複数のサブプロットと軸を含む複雑な円グラフを描画する方法を紹介します。

3.1 準備

まず、必要なライブラリとモジュールをいくつかインポートする必要があります。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

このうち、NumPy は Python で数値計算を処理するためによく使用されるライブラリであり、Matplotlib はグラフィックを描画するためのコア ライブラリです。さらに、フォントのプロパティを設定するための FontProperties クラスもインポートしました。

次に、円グラフ内の各部分のラベル、スケール、色を保存するための変数をいくつか定義します。コードは以下のように表示されます。

# 饼状图中各部分的标签、比例和颜色
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
colors = ['yellowgreen', 'gold', '#FF0000', 'lightcoral']

4. 部分グラフの描画と座標軸の設定

複雑な円グラフを描画するには、 plt.subplots() メソッドを使用して複数のサブプロットを作成し、各サブプロットに異なる円グラフを描画する必要があります。同時に、データをより適切に表示するために 2 つの座標軸を設定する必要もあります。コードは以下のように表示されます。

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.font_manager import FontProperties
# The slices will be ordered and plotted counter - clockwise . 
labels =' Frogs ',' Hogs ',' Dogs ',' Logs '
sizes =[15,30,45,10]

colors =['yellowgreen','gold','#FF0000','lightcoral'] 

explode =(0,0.15,0,0.2)
#使饼状图中第2片和第4片裂开
fig = plt.figure(dpi=300) 

font = FontProperties(fname=r"c:\windows\fonts\times.ttf", size=12)

ax = fig.gca ()

ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={
    
    'fontproperties': font},
autopct ='%1.1f%%', shadow = True , startangle =90, radius =0.8, center =(1,1), frame = True,)
ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={
    
    'fontproperties': font},
autopct ='%1.1f%%', shadow = True , startangle =90, radius =0.8, center =(-1,1), frame = True )
ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={
    
    'fontproperties': font},
autopct ='%1.lf%%', shadow = True , startangle =90, radius =0.8, center =(-1,-1), frame = True )
ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={
    
    'fontproperties': font},
autopct ='%1.1f%%', shadow = True , startangle =90, radius =0.8, center =(1,-1), frame = True )

ax.set_xticks ([-1,1])
ax.set_yticks ([-1,1])
ax.set_xticklabels ([" Sunny "," Cloudy "],fontname='Times New Roman',fontsize=14)#设置坐标轴刻度上显示的标签 
ax.set_yticklabels ([" Dry "," Rainy "],fontname='Times New Roman',fontsize=14)
ax.set_xlim ((-2.5,2.5))
ax.set_ylim ((-2.5,2.5))
# Set aspect ratio to be equal so that pie is drawn as a circle . ax . set _ aspect (' equal ')

for tick in ax.get_xticklabels():
    tick.set_fontname("Times New Roman")
for tick in ax.get_yticklabels():
    tick.set_fontname("Times New Roman")
# #设置坐标轴刻度

# #设置坐标轴跨度
plt.tight_layout()
plt.savefig('.jpg')

4.1 実行結果

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/m0_58857684/article/details/130774444