您的位置:首页 > 编程语言 > PHP开发

matplotlib绘图(二)——研究僧、科研狗们的进阶tips

2021-01-02 16:54 447 查看

首先,导入各种库:


导入文件


采用np.loadtxt( )导入文件,注意数据文件必须在当前工作路径下。



输入help(np.loadtxt)查看帮助文档:


loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None,
converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0,
encoding='bytes')

上面给出了帮助文档中方法loadtxt()所有的参数,接下来会逐一介绍:

fname:文件或字符串

dtype:数据类型,默认浮点数

comments:指示注释开头的字符,默认为“#”

delimiter:用于分隔值得字符,默认为空格

converters:用来定义将对应的列转换为浮点数的函数

skiprows:跳过开头的行数

usecols:确定哪几列被读取,第一列是0。例:"usecols=(1,4,5)"    ,将读取第2列,5列和第6列。

unpack:如果是True,将返回各列

ndmin:返回的数组将至少具有“ndmin”维度


图像设置

导入文件,并且读取数据后,就进行绘图操作:



其中,方法fig,ax=plt.subplots( 行数,列数)可以创建一个新的Figure,并返回一个含有已创建的subplot对象的NumPy数组,这样可以轻松地对ax数组进行索引。


其他关于图片坐标轴的设置在之前的推文已经介绍,这里不再赘述。


上方的图片中,坐标轴的刻度线是往外的,但是一般的要求是刻度线要往内,所以可以通过以下操作设置:



这里rcParams的使用前,注意要import matplotlib。

还可以全局设置图片像素、分辨率、图片大小和字体大小:



图片局部放大


有时候,图片需要局部放大才能看清楚曲线的分布。例如上图中,两条曲线的后半段几乎重合,应该创建一个子图观察图片局部的曲线趋势。


首先,需要导入:



之后,输入以下代码:



其中,方法

zoomed_inset_axes(ax,2,loc=1)中的关键参数zoom=2,代表的是scaling factor of the data axes,当zoom小于1时,子图的坐标被缩小,当zoom大于1时,子图的坐标被放大。其中关键参数loc=1,代表的是子图的位置。具体的设置有以下这些:

'upper right'  : 1,
'upper left'   : 2,
'lower left'   : 3,
'lower right'  : 4,
'right'        : 5,
'center left'  : 6,
'center right' : 7,
'lower center' : 8,
'upper center' : 9,
'center'       : 10


绘制标记框可以用mark_inset,来表示放大的区域。其中关键参数loc1,loc2可以设置为{1,2,3,4}。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: