一、前言
1)本文需要了解Python相关的基础知识。
2))本文参考快速入门指南 — Matplotlib 3.7.0 文档,实现利用Python完成日常的图表绘制。
二、基础知识
1)本文的绘图借助于Matplotlib这样一个广泛使用的Python绘图库,可以创建各种类型的静态、动态和交互式图表。而Pyplot是Matplotlib中的一个子模块,使得图形绘制更加简单方便。Pyplot提供许多简单的函数来创建各种类型的图表,像是折线图、散点图等。使用Pyplot绘图之前通常需要导入Pyplot库:
import matplotlib.pyplot as plt
2)在绘图之前,我们通常也会调用Pandas这一开源的Python数据分析库,用于处理和分析具有标签的数据,使得数据的分析,筛选等操作更加简单和高效。同样在使用之前我们需要导入Pandas库:
import pandas as pd
3)此外,我们还会借助NumPy库完成快速的数值计算和数组操作,同样同样在使用之前需要导入Numpy库:
import numpy as np
4)下图是我们在绘图过程需要注意的各种“组件”,后文会通过一系列相关的函数帮助我们完成一张图的拼接。
三、绘图
1)通常我们的数据会以CSV、Excel、JSON、SQL等各种格式存储,而Pandas库正好提供相关工具帮助我们实现数据的读取和导入等操作。如下所示:
data = pd.read_csv('1016_F2a.csv')
通过Pandas库调用read_csv()函数将CSV文件('1016_F2a.csv')读入到名为data的DataFrame对象中,以便后续的数据处理和分析。
2)在绘制之前,我们通常会借助于Pyplot库中的figure()函数帮助我们创建一个新的图形窗口,如下所示:
fig = plt.figure(figsize=(6, 4), dpi=100)
这里创建了名为fig的图形窗口,其中figsize()为图形的尺寸(以元组表示,第一个元素为宽度,第二个元素为高度,单位为英寸),dpi为图形的分辨率。除此之外还有如下参数:
num:指定图形ID号,若存在则激活图形
facecolor:指定图形的背景颜色;
edgecolor:指定图形边框的颜色;
frameon:指定是否显示图形边框;
subplotpars:指定子图的布局参数;
tight_layout:是否自动调整子图布局,以避免溢出和重叠;
3)接下来为我们图表的横、纵坐标选择对应的数据,这里借助于Pandas库中的loc[]函数对前文提到的数据进行检索(基于标签的方式),基本用法如下所示:
xdata = data.loc[:, 'Number of table stages(d)'] y1data = data.loc[:, 'False Negative(k=140)'] y2data = data.loc[:, 'False Negative(k=210)'] y3data = data.loc[:, 'False Negative(k=350)'] y4data = data.loc[:, 'False Negative(k=420)']
其中'xdata'为横坐标数据,对应data中的Number of table stages(d)列;y1data为第一个纵坐标数据,对应data中False Negative(k=140)列,以此类推...
需要注意loc[row_indexer, column_indexer]中分别利用row_indexer, column_indexer进行行索引和列索引。这里':'表示选取的所有行。
4)横、纵坐标有了数据,那自然少不了自身的刻画,像是坐标轴范围、刻度等等,如下所示:
plt.xlim((2, 8)) plt.ylim((0,30))
xlim()和ylim()分别设置X轴和Y轴的的坐标范围,其中(2,8)表明X轴的范围设置为2到8,同理Y轴的范围设置为0到30。
my_x_ticks = np.arange(2, 9, 1) my_y_ticks = np.arange(0, 35, 5) plt.xticks(my_x_ticks, size = 12) plt.yticks(my_y_ticks, size = 12)
对于坐标轴的刻度描述,这里借助于Numpy库中的arange()函数,可以指定起始值、终止值(不包含)、步长等参数。
之后借助于Pyplot中的xticks()和yticks()函数完成刻度的描述,其参数如下所示:
ticks:设置刻度标签,如my_x_ticks。
size:设置标签字体大小。
plt.tick_params(direction = 'in', top = True, bottom = True, left = True, right = True)
这里借助于tick_params()设置坐标轴刻度线的方向以及那些刻度需要绘制
direction:刻画刻度线和刻度标签的方向
in:刻度线和标签绘制在坐标轴内部;
out:刻度线和标签绘制在坐标轴外部;
inout:刻度线绘制在坐标轴内部,标签绘制在外部;
default:刻度线绘制在坐标轴内部,标签绘制在外部
top、bottom、left、right:取值为"True"或"False",表明是否需要绘制上、下、左、右四个方向的刻度
5)接下来就是对于数据的可视化操作--画图
plt.plot(xdata, y1data, marker = "s", markerfacecolor = 'none', color = 'red', label = 'k = 140, m = 3360', linewidth = 0.5) plt.plot(xdata, y2data, marker = "o", markerfacecolor = 'none', color = 'black', linestyle = '--', label = 'k = 210, m = 5040', linewidth = 0.5) plt.plot(xdata, y3data, marker = "^", markerfacecolor = 'none', color = 'darkblue', linestyle = '--', label = 'k = 350, m = 6720', linewidth = 0.5) plt.plot(xdata, y4data, marker = "s", color ='deeppink', linestyle = '-', label = 'k = 420, m = 8400', linewidth = 0.5)
实际上就是借助于Pyplot中的plot的函数完成相关的绘制,其参数如下所示:
xdata:X轴上的数据;
ydata:Y轴上的数据;
marker:表示线条上的标记形状,如"s"表示正方形等;
markerfacecolor:表示标记的填充颜色;(字符串颜色,如'red'、'blue';十六进制RGB颜色码,如'#FF0000';RGB元组,如'(1,0,0)')
color:表示线条颜色;
linestyle:线条样式,如"--"表示虚线,"-"表示实线;
label:线条标签,用以区分不同的线条;之后我们需要调用Pyplot中legend()函数来创建图例,以显示设置的标签。如下所示:
plt.legend()
linewidth:线条宽度。
6)然后添加相关横纵坐标的描述
plt.xlabel(u'Number of table stages(d)', size = 14) plt.ylabel(u'False Negative(%)', size = 14)
这里分别利用xlabel()和ylabel()函数设置x和y的名称,这里的'u'表示Unicode编码,即支持中文字符的显示,而size参数用于设置文本的大小。
7)当利用Python脚本刻画图表时,不要忘记如下命令:
plt.show()
利用Python脚本时,一定要调用该函数才能显示图像,而在交互模式(如在Jupyter Notebook或IPython shell中)下则不需要使用这个命令
8)若是需要保存绘制的图表,则需要调用如下命令:
plt.savefig('F2(a).png')
也就是利用savefig()函数帮助我们将图表保存为指定文件(F2(a).png)以便后续的访问,同时savefig()函数也支持其他的输出格式,如PDF、SVG、EPS等。
以上内容仅记录本人学习,如有错误之处,敬请指正!谢谢!
标签:plt,Python,绘制,Pyplot,--,绘图,刻度,标签,data From: https://www.cnblogs.com/hjxiamen/p/17150567.html