如何利用Python分析数据--绘图

一、前言

  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等。

 

  以上内容仅记录本人学习,如有错误之处,敬请指正!谢谢!

posted @ 2023-02-24 16:22  有梦-  阅读(438)  评论(0编辑  收藏  举报