【python学习】-matplotlib绘制二维颜色填充图(contourf)及colorbar,坐标轴刻度字体大小等相关设置
二维等高线图绘制及其相关设置官方例子改进版1(对levels进行设置)改进版2(美化图形)官方例子import matplotlib.pyplot as pltimport numpy as npfrom numpy import mafrom matplotlib import ticker, cm#x,y及Z数据信息N = 100x = np.linspace(-3.0, 3.0, N)y =
·
二维等高线图绘制及其相关设置
官方例子
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()
【图形结果】
更多推荐
已为社区贡献15条内容
所有评论(0)