首頁 > 軟體

基於Python+Matplotlib繪製漸變色扇形圖與等高線圖

2022-04-14 13:02:41

漸變色扇形圖

使用 python - matplotlib 顏色地圖plt.cm模組兒,來繪製出顏色漸變、更加好看的扇形圖。也稱彩虹圖,但是也不限於彩虹圖,可以選擇的顏色地圖(colormap)有:

Paired, autumn, rainbow, gray, spring, Darks。

下邊以顏色地圖rainbow為例(彩虹圖),寫出以下程式碼,並展示各種顏色樣式下的影象效果。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm


# 字型使用楷體
plt.rcParams['font.sans-serif'] = ['STKAITI']
plt.rcParams['axes.unicode_minus'] = False
# 準備資料
shapes = ['安徽省', '雲南省', '福建省', '河南省', '遼寧省',
          '重慶', '湖南省', '四川省', '北京', '上海', '廣西壯族自治區', '河北省',
          '浙江省', '江蘇省', '湖北省', '山東省', '廣東省']
values = [842, 866, 1187, 1405, 1495, 1620, 1717,
          2313, 2378, 3070, 4332, 5841, 6482, 7785, 9358, 9818, 20254]
s = pd.Series(values, index=shapes)
labels = s.index
sizes = s.values


fig, ax = plt.subplots(figsize=(8, 8), facecolor='#cc00ff')
# rainbow
# 這裡的len(sizes)是選擇的顏色的個數,也是繪製餅圖的資料個數,
# 此處引數通常寫為np.arange(len(sizes))/len(sizes)形式,不用糾結太多關於其用法。
colors = cm.rainbow(np.arange(len(sizes))/len(sizes))
patches, texts, autotexts = ax.pie(sizes, labels=labels, autopct='%1.0f%%',
                                   startangle=180,
                                   colors=colors,
                                   pctdistance=0.8,
                                   textprops={'fontsize': 15, 'color': '#8B1A1A'},
                                   )

ax.set_title('部分地區某指標占比圖', loc='center', fontsize=25, color='blue')
plt.show()

影象效果如下:

除此之外,也可以呼叫cm模組的get_cmap()方法來完成。可以對該方法有所瞭解(小啾覺得上邊展示的方法是更為方便的)。

以Paired顏色地圖 為例:

以顏色地圖autumn為例:

以顏色地圖gray為例:

以顏色地圖spring為例:

等高線

繪製等高線圖使用的是matplotlib.pyplot的contourf()方法。

該函數語法如下:

plt.contourf(X, Y, f(X,Y))

其中 X和Y都是二維陣列。(meshgrid()方法作用後的 網格化 形式)

f(X,Y)指的是對X、和Y使用f()函數進行計算的結果,計算的結果作為該座標點的高度。

一段可以參考的範例程式碼如下:

import numpy as np
import matplotlib.pyplot as plt


# 計算x,y座標對應的高度值
def fun(x, y):
    return (1-x/2+x**2+y**3) * np.exp(-x**2-y**2)


# 設定個背景色
plt.figure(facecolor='#66ff33')
n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)
# 把x,y資料轉換為二維資料(網格化)
X, Y = np.meshgrid(x, y)
# 填充等高線
plt.contourf(X, Y, fun(X, Y))

# 顯示圖表
plt.show()

其中fun(x, y)是計算高度的公式,可以根據我們的需求自由客製化。

繪製出的影象效果呈現如下:

到此這篇關於基於Python+Matplotlib繪製漸變色扇形圖與等高線圖的文章就介紹到這了,更多相關Python Matplotlib扇形圖 等高線圖內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com