【python学习】-matplotlib绘制二维颜色填充图(contourf)及colorbar,坐标轴刻度字体大小等相关设置

【python学习】-matplotlib绘制二维颜色填充图(contourf)及colorbar,坐标轴刻度字体大小等相关设置,第1张

【python学习】-matplotlib绘制二维颜色填充图(contourf)及colorbar,坐标轴刻度字体大小等相关设置

二维等高线图绘制及其相关设置
  • 官方例子
  • 改进版1(对levels进行设置)
  • 改进版2(美化图形)

官方例子
import matplotlib.pyplot as plt
import numpy as np
from numpy import ma
from matplotlib import ticker, cm
#x,y及Z数据信息
N = 100
x = np.linspace(-3.0, 3.0, N)
y = np.linspace(-2.0, 2.0, N)
X, Y = np.meshgrid(x, y)#此处 *** 作是为了将x,y的数据点数一致
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
#进行绘图
fig, ax = plt.subplots()
cs = ax.contourf(X, Y, Z, cmap=plt.get_cmap('Spectral'))
#添加colorbar
cbar = fig.colorbar(cs)
plt.show()

【显示结果】

改进版1(对levels进行设置)

待改进/存在问题
官方例子中得到的图形里面颜色与颜色之间轮廓太清晰了,如果想要得到渐进的图形,需要对颜色间隔进行限制,即改进为:

import matplotlib.pyplot as plt
import numpy as np
from numpy import ma
from matplotlib import ticker, cm
#x,y及Z数据信息
N = 100
x = np.linspace(-3.0, 3.0, N)
y = np.linspace(-2.0, 2.0, N)
X, Y = np.meshgrid(x, y)#此处 *** 作是为了将x,y的数据点数一致
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
#进行绘图
fig, ax = plt.subplots()
levels = np.arange(-2,2.0,0.005)#对颜色渐进细致程度进行设置,其中-2与2是色条显示的数据范围,0.005是颜色显示的细致程度
cs = ax.contourf(X, Y, Z, levels,cmap=plt.get_cmap('Spectral'))
#添加colorbar
cbar = fig.colorbar(cs)
plt.show()

【显示结果】

改进版2(美化图形)

对图形坐标轴坐标,刻度字体大小及刻度间隔进行设置,此外设置colorbar显示的刻度个数,并在colorbar上面添加数据label.

import matplotlib.pyplot as plt
import numpy as np
from numpy import ma
from matplotlib import ticker, cm
from matplotlib.pyplot import MultipleLocator
#x,y及Z数据信息
N = 100
x = np.linspace(-3.0, 3.0, N)
y = np.linspace(-2.0, 2.0, N)
X, Y = np.meshgrid(x, y)#此处 *** 作是为了将x,y的数据点数一致
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
#进行绘图
fig, ax = plt.subplots()
levels = np.arange(-2,2.0,0.005)#对颜色渐进细致程度进行设置,其中0与z_max是色条显示的数据范围,0.005是颜色显示的细致程度
cs = ax.contourf(X, Y, Z, levels,cmap=plt.get_cmap('Spectral'))
#添加colorbar
cbar = fig.colorbar(cs,fraction=0.1, pad=0.15, shrink=0.9, anchor=(0.0, 0.3))#对colorbar的大小进行设置
#设置颜色条的刻度
tick_locator = ticker.MaxNLocator(nbins=6)  # colorbar上的刻度值个数
cbar.locator = tick_locator
cbar.ax.tick_params(labelsize=12.5)
#设置颜色条的title
cbar.ax.set_title('unit',fontsize=12.5)
cbar.update_ticks()#显示colorbar的刻度值
#设置坐标刻度及间隔
ax.set_xlim(-3,3)
ax.set_ylim(-2,2)
x_major_locator=MultipleLocator(1.2)#刻度间隔
y_major_locator=MultipleLocator(0.8)
ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
ax.yaxis.set_major_locator(y_major_locator)
#设置坐标轴标签
font3 = {'family' : 'Arial',
         'weight' : 'normal',
         'size'   : 14,
         }
ax.set_xlabel('$t{x}$ (unit)',font3)
ax.set_ylabel('$t{y}$ (unit)',font3)
#设置坐标刻度字体大小
ax.tick_params(labelsize=14)
labels = ax.get_xticklabels() + ax.get_yticklabels()
[label.set_fontname('Arial') for label in labels]
#设置图像像素及大小
plt.rcParams['figure.figsize']=(6.0,4.0)
plt.rcParams['savefig.dpi'] = 300 #图片像素
plt.rcParams['figure.dpi'] = 300 #分辨率
plt.show()

【图形结果】

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5659811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存