首页 > 编程语言 >如何利用Python分析数据--绘图

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

时间:2023-02-24 16:34:26浏览次数:56  
标签:plt Python 绘制 Pyplot -- 绘图 刻度 标签 data

一、前言

  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

相关文章

  • 最简大数据开发环境(二)Python+Spark版
     最简大数据开发环境(一)Scala+Spark版最简大数据开发环境(二)Python+Spark版一年前,分享了基于sbt搭建的用Scala语言开发Spark应用的教程,最近又用Python语言实践......
  • 机器学习(2):KNN-近邻算法
    KNN​​KNN概述​​​​准备:使用Python导入数据​​​​numpy.array()​​​​实施KNN分类算法​​​​计算已知类别数据集中的点与当前点之间的距离​​​​按照距离递增次......
  • VMware ESXi 8.0b - 领先的裸机 Hypervisor (Dell & HPE Custom Image update)
    本站发布Dell和HPE定制版ESXi8.0b镜像请访问原文链接:https://sysin.org/blog/vmware-esxi-8/,查看最新版。原创作品,转载请保留出处。作者主页:www.sysin.org产品......
  • 财大课表编排
    闲来无事,写个程序编排财大课表,也算是催促自己学习项目地址:https://github.com/PaperMisty/Tjufe-course-arrange 其中,denoise2.py程序主要将课表src.png降噪为tmp.pn......
  • P8422 题解
    前言题目传送门!更好的阅读体验?第三道大模拟,写篇题解庆祝一下。文中粗体字是我踩坑的地方,欢迎统计我被坑了多少次。思路终局奖分很简单,放在主函数里,所以我们看每次的......
  • Vue中的nextTick理解
    一、NextTick是什么官方定义:在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM。我们可以理解成,Vue在更新DOM时是异步执行......
  • 操作系统储存管理(页式、段式、段页式)
    某计算机系统的内存大小为128k,采用可变分区分配方式进行内存分配,当前系统的内存分块情况如下图所示,现有作业4申请内存9k,几种不同的存储分配算法在分配中,会产生什么样的结果......
  • 遥感(2):电磁波谱
    将各种电磁波按波长的大小(或频率的高低)依次排成图表,此表即为电磁波电磁波的波长(频率)不同,是因为产生电磁波的波源不同。波长(wavelength)是指波在一个振动周期内传播的距离。也......
  • 智慧农业环境实时监测,为农业生产提供多元化数据
    物联网为农业生产带来新的管理模式,趋向规模化、科学化、数据化的模式能够有效提高产量和生产效率。传统的大规模种植,需要大量人力投入,工作效率低下、过多的资源浪费以及不可......
  • PowerBI中实现多字段关联关系
    PowerBI关系管理relationshipmanagement中,如何实现复合主键关联,即多字段关联。现状:relationshipmanagement中目前只支持一个字段关联关系,且只能一个关系。需求:现实情况......