600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 使用python matplotlib画二维图 设置坐标轴刻度和colorbar刻度ticks

使用python matplotlib画二维图 设置坐标轴刻度和colorbar刻度ticks

时间:2023-02-20 04:57:26

相关推荐

使用python matplotlib画二维图 设置坐标轴刻度和colorbar刻度ticks

文章目录

导入包数据准备画图令xy坐标刻度用科学计数法表示控制刻度间隔刻度字体大小添加colorbar并设置刻度完整代码

导入包

import numpy as npimport matplotlib.pyplot as pltimport matplotlib.colors as mcolorsfrom matplotlib.ticker import (MultipleLocator, FormatStrFormatter, AutoMinorLocator)

数据准备

xi = np.linspace(-50000, 50000, 500)#从-50000到50000等间隔采样500个点构建1D数组yi = np.linspace(-50000, 50000, 500)#从-50000到50000等间隔采样500个点构建1D数组#从1D坐标得到2D网格坐标X,Y=np.meshgrid(xi,yi)#合成数据Z=np.sin(1e-8*X*Y)*np.exp(-1e-8*X**2-1e-8*Y**2)#自定义色标colors=["magenta","blueviolet","royalblue","aqua","springgreen","greenyellow","yellow","orangered","red","white"]clrmap=mcolors.LinearSegmentedColormap.from_list("mycmap",colors)

画图

#开始绘制#图片宽度6, 高4,单位inchfig=plt.figure(figsize=(6,4))plt.pcolor(X,Y,Z,cmap=clrmap)#令xy的尺度相同plt.gca().set_aspect('equal', 'box')#设置xy轴标签plt.gca().set_xlabel("x (cm)",fontsize=12.5)plt.gca().set_ylabel("y (cm)",fontsize=12.5)

到此,得下图

令xy坐标刻度用科学计数法表示

使用matplotlib.axes.Axes.ticklabel_format来控制坐标刻度格式。

用法:ticklabel_format(style='scientific',scilimits=(m,n),useMathText=False)scilimits=(m,n)表示如果刻度范围超出 1 0 m 10^m 10m到 1 0 n 10^n 10n,那么就是用科学计数法。如果将scilimits参数设为(0,0),那么对于所有的刻度范围都自动显示成科学计数的形式。令useMathText=False的时候,会显示为 1 e X 1eX 1eX的形式,useMathText=True的时候,会显示成 1 0 X 10^X 10X的形式。 官方文档:/api/_as_gen/matplotlib.axes.Axes.ticklabel_format.html#matplotlib.axes.Axes.ticklabel_format

在前面的画图代码继续敲下面这行:

#xy坐标刻度使用科学计数法plt.gca().ticklabel_format(style='scientific',scilimits=(-2,2),useMathText=True)

得到下图

控制刻度间隔

方法set_major_locator(locator)设置主刻度,set_minor_locator(locator)设置副刻度。locater使用MultipleLocator(n)可以令间隔为n,如果用AutoMinorLocator()则自动设置间隔。官方示例: Major and minor ticks

继续上述的实例

#设置主刻度 major ticks和副刻度minor ticks#使用MultipleLocator(10000)设置主刻度的间隔为10000plt.gca().xaxis.set_major_locator(MultipleLocator(10000))plt.gca().yaxis.set_major_locator(MultipleLocator(10000))#自动设置副刻度的间隔plt.gca().xaxis.set_minor_locator(AutoMinorLocator())plt.gca().yaxis.set_minor_locator(AutoMinorLocator())

运行得到

刻度字体大小

#设置刻度的字体大小,which='both'表示major和minor ticks一起设置plt.gca().tick_params(which='both',labelsize=12.5)#下面两句设置x轴和y轴科学计数法部分(即x10^(4))的字体plt.gca().xaxis.get_offset_text().set_fontsize(12.5)plt.gca().yaxis.get_offset_text().set_fontsize(12.5)

得下图

添加colorbar并设置刻度

给图片添加颜色条,并且设置颜色条的刻度

#添加颜色条clb=plt.colorbar()#设置颜色条的刻度clb.ax.yaxis.set_major_locator(MultipleLocator(0.025))clb.ax.yaxis.set_minor_locator(MultipleLocator(0.005))clb.ax.tick_params(labelsize=12.5)#设置颜色条的titleclb.ax.set_title('unit',fontsize=12.5)

完整代码

完整代码如下:

# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltimport matplotlib.colors as mcolorsfrom matplotlib.ticker import (MultipleLocator, FormatStrFormatter, AutoMinorLocator)#产生数据#从-50000到50000等间隔采样500个点xi = np.linspace(-50000, 50000, 500)yi = np.linspace(-50000, 50000, 500)#从一维数组得到二维数组X,Y=np.meshgrid(xi,yi)Z=np.sin(1e-8*X*Y)*np.exp(-1e-8*X**2-1e-8*Y**2)#自定义色标colors=["magenta","blueviolet","royalblue","aqua","springgreen","greenyellow","yellow","orangered","red","white"]clrmap=mcolors.LinearSegmentedColormap.from_list("mycmap",colors)#开始绘制#图片宽度6, 高4,单位inchfig=plt.figure(figsize=(6,4))plt.pcolor(X,Y,Z,cmap=clrmap)#令xy的尺度相同plt.gca().set_aspect('equal', 'box')#设置xy轴标签plt.gca().set_xlabel("x (cm)",fontsize=12.5)plt.gca().set_ylabel("y (cm)",fontsize=12.5)#xy坐标刻度使用科学计数法plt.gca().ticklabel_format(style='scientific',scilimits=(-2,2),useMathText=True)#设置主刻度 major ticks和副刻度minor ticks#使用MultipleLocator(10000)设置主刻度的间隔为10000plt.gca().xaxis.set_major_locator(MultipleLocator(10000))plt.gca().yaxis.set_major_locator(MultipleLocator(10000))#自动设置副刻度的间隔plt.gca().xaxis.set_minor_locator(AutoMinorLocator())plt.gca().yaxis.set_minor_locator(AutoMinorLocator())#设置刻度的字体大小,axis='both'表示major和minor ticks一起设置plt.gca().tick_params(which='both',labelsize=12.5)#下面两句设置x轴和y轴科学计数法部分(即x10^(4))的字体plt.gca().xaxis.get_offset_text().set_fontsize(12.5)plt.gca().yaxis.get_offset_text().set_fontsize(12.5)#添加颜色条clb=plt.colorbar()#设置颜色条的刻度clb.ax.yaxis.set_major_locator(MultipleLocator(0.025))clb.ax.yaxis.set_minor_locator(MultipleLocator(0.005))clb.ax.tick_params(labelsize=12.5)#设置颜色条的titleclb.ax.set_title('unit',fontsize=12.5)plt.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。