时间:2022-07-12 10:55:47 | 栏目:Python代码 | 点击:次
使用 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)是计算高度的公式,可以根据我们的需求自由定制。
绘制出的图像效果呈现如下: