Python绘图 数据可视化

Python绘图 \ 数据可视化

本文旨在介绍Python绘图的基本知识,通过介绍绘图基础知识并具体列举三种常用的绘图工具来帮助读者了解绘图工具的适用。在文末笔者给出了科研绘图的一般格式以供参考。

为了方便大家,先在此放上从Excel中提取数据并直接进行数据处理的代码,读者可以在实操过程中不断深入学习相关知识。

import pandas as pd
import matplotlib.pyplot as plt

file_path = "D:\filepath\example.xlsx"
sheet = pd.read_excel(file_path, sheet_name = "Sheet1")
col_name = sheet.columns

plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'

plt.rcParams['font.sans-serif']=['Times New Roman']
font1={'family': 'Times New Roman', 'weight': 'light', 'size': 12}
font2={'family': 'Times New Roman', 'weight': 'light', 'size': 16}

plt.title("Title",fontdict=font2)

plt.title("Title")
plt.minorticks_on()
plt.xlabel('x - label',fontdict=font1)
plt.ylabel('y - label',fontdict=font1)

plt.ticklabel_format(axis='both',style='sci')
plt.savefig("example.png",format="png",dpi=600)
linestyle = ['r-+', 'g-o', 'b-*','y-^', 'c-v', 'm-x']

for i in range(1,len(col_name)):
    plt.plot(sheet[col_name[0]], sheet[col_name[i]],linestyle[i%len(linestyle)],lw=1.5,label=col_name[i])

plt.legend(loc="upper right",scatterpoints=1,prop=font1,shadow=False,frameon=True)

plt.ticklabel_format(axis='both',style='sci')
plt.savefig("example.png",format="png",dpi=600)
plt.show()

待处理数据如下

Python绘图  数据可视化
处理结果
Python绘图  数据可视化
emmmm,选取的数据不是很好,don’t carry,接下来就是Python绘图与数据可视化的详细介绍了。

绘图基础知识

  • 画板figure,画纸Sublpot
  • 画纸上最上方是标题title
  • 坐标轴Axis
  • 图例Legend
  • 网格Grid
  • 点 Markers

Python绘图  数据可视化

Python绘图  数据可视化

Python绘图  数据可视化

绘图类型

函数名称描述Bar绘制条形图Barh绘制水平条形图Boxplot绘制箱型图Hist绘制直方图his2d绘制2D直方图Pie绘制饼状图Plot在坐标轴上画线或者标记Polar绘制极坐标图Scatter绘制x与y的散点图Stackplot绘制堆叠图Stem用来绘制二维离散数据绘制(又称为”火柴图”)Step绘制阶梯图Quiver绘制一个二维按箭头

接下来,我们对Python中最常适用的三种绘图工具进行介绍。

Matplotlib 是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy 数组来绘制 2D 图像,其使用简单、代码清晰易懂。

; PyLab

PyLab 是一个面向 Matplotlib 的绘图库接口,其语法和 MATLAB 十分相近。它和 Pyplot 模快都够实现 Matplotlib 的绘图功能。

import numpy
import pylab

x = numpy.linspace(-3, 3, 30)
y = x**2

pylab.plot(x, y)
pylab.show()
from pylab import *
plot(x, sin(x))
plot(x, cos(x), 'r-')
plot(x, -sin(x), 'g--')
show()

Pyplot

在 Matplotlib 中,面向对象编程的核心思想是创建 图形对象(figure object)。通过图形对象来调用其它的方法和属性,这样有助于我们更好地处理多个画布。在这个过程中,pyplot 负责生成图形对象,并通过该对象来添加一个或多个 axes 对象(即绘图区域)。

Matplotlib 提供了 matplotlib.figure图形类模块,它包含了创建图形对象的方法。通过调用 pyplot 模块中 figure() 函数来实例化 figure 对象。如下所示:

基础案例


import matplotlib.pyplot as plt

x = [1,2,3,4]
y = [1,4,9,16]

plt.plot(x,y)

plt.show()

绘图属性设置

'''
color:线条颜色
marker:点的形状
linestyle:线条形状
axis:坐标轴范围
'''
plt.plot(x,y,color='r',marker='o',linestyle='dashed')

plt.axis([0,6,0,20])
plt.show()

添加文字


plt.xlabel('x-label')
plt.ylabel('y-label')
plt.title('title')

绘制正弦图像

from matplotlib import pyplot as plt
import numpy as np
import math

x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("sine")
plt.title('sine wave')

plt.show()

描点

import matplotlib.pyplot as plt
import numpy as np

xpoints = np.array([1, 8])
ypoints = np.array([3, 10])

plt.plot(xpoints, ypoints, 'o')
plt.show()

绘制直线

import matplotlib.pyplot as plt
import numpy as np

xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

plt.plot(xpoints, ypoints)
plt.show()

绘制正余弦

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,4*np.pi,0.1)
y = np.sin(x)
z = np.cos(x)
plt.plot(x,y,x,z)

plt.show()

格式设置

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)

plt.title("RUNOOB TEST TITLE")
plt.xlabel("x - label")
plt.ylabel("y - label")

plt.show()

subplot() 方法绘制多张图

import matplotlib.pyplot as plt
import numpy as np

xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

plt.subplot(1, 2, 1)
plt.plot(xpoints,ypoints)
plt.title("plot 1")

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("plot 2")

plt.suptitle("RUNOOB subplot Test")
plt.show()
import matplotlib.pyplot as plt
import numpy as np

x = np.array([0, 6])
y = np.array([0, 100])

plt.subplot(2, 2, 1)
plt.plot(x,y)
plt.title("plot 1")

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(2, 2, 2)
plt.plot(x,y)
plt.title("plot 2")

x = np.array([1, 2, 3, 4])
y = np.array([3, 5, 7, 9])

plt.subplot(2, 2, 3)
plt.plot(x,y)
plt.title("plot 3")

x = np.array([1, 2, 3, 4])
y = np.array([4, 5, 6, 7])

plt.subplot(2, 2, 4)
plt.plot(x,y)
plt.title("plot 4")

plt.suptitle("RUNOOB subplot Test")
plt.show()
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')

f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)

fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)

plt.show()

scatter() 方法来绘制散点图

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18, 25, 19, 31, 28, 14])

plt.scatter(x, y)

plt.show()

bar() 绘制柱形图

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])

plt.bar(x,y)

plt.show()

绘制饼图

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y)

plt.show()

科研绘图

下面笔者给出一种较为全面的绘图程序,读者可自行修改参数适用。

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4, 5, 6])

y1=[1,3,5,7,9,11]
y2=[2,8,13,19,22,29]

plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'

plt.rcParams['font.sans-serif']=['Times New Roman']
font1={'family': 'Times New Roman', 'weight': 'light', 'size': 12}
font2={'family': 'Times New Roman', 'weight': 'light', 'size': 16}

plt.title("Title",fontdict=font2)
plt.plot(x,y1,'r-',lw=1.5,label="theory",marker = 'o')
plt.plot(x,y2,'b-',lw=1.5,label="simulation",marker = 'o')

plt.xlim((0.5, 6.5))
plt.ylim((0, 36))

plt.title("Title")
plt.minorticks_on()
plt.xlabel('x - label',fontdict=font1)
plt.ylabel('y - label',fontdict=font1)
plt.legend(loc="upper right",scatterpoints=1,prop=font1,shadow=False,frameon=True)

plt.ticklabel_format(axis='both',style='sci')
plt.savefig("example.png",format="png",dpi=600)
plt.show()

运行结果:

Python绘图  数据可视化

格式设置

颜色(color 简写为 c):
蓝色: 'b' (blue)
绿色: 'g' (green)
红色: 'r' (red)![请添加图片描述](https://img-blog.csdnimg.cn/6457112caf4c42dfba77a64ed2d0b3cc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATW9zdGVyMjQ2OQ==,size_20,color_FFFFFF,t_70,g_se,x_16)

蓝绿色(墨绿色): 'c' (cyan)
红紫色(洋红): 'm' (magenta)
黄色: 'y' (yellow)
黑色: 'k' (black)
白色: 'w' (white)

线型(linestyle 简写为 ls):
实线: '-'
虚线: '--'
虚点线: '-.'
点线: ':'
点: '.'

点型(标记marker):
像素: ','
圆形: 'o'
上三角: '^'
下三角: 'v'
&#x5DE6;&#x4E09;&#x89D2;&#xFF1A; '<' 右三角: '>'
&#x65B9;&#x5F62;&#xFF1A; 's'
&#x52A0;&#x53F7;&#xFF1A; '+'
&#x53C9;&#x5F62;&#xFF1A; 'x'
&#x68F1;&#x5F62;&#xFF1A; 'D'
&#x7EC6;&#x68F1;&#x5F62;&#xFF1A; 'd'
&#x5782;&#x76F4;&#x7EBF;&#xFF1A; '|'
&#x6C34;&#x5E73;&#x7EBF;&#xFF1A; '_'
</'>

Original: https://blog.csdn.net/woaiwulima/article/details/122974918
Author: 力语
Title: Python绘图 数据可视化

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/764157/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • django阿里云服务器部署记录

    django部署的大概步骤: 安装环境(Python,Nginx,MySQL,Django及项目依赖的Python包) 构建Python虚拟环境,将项目上传至虚拟环境 配置Ngin…

    Python 2023年8月4日
    041
  • 教师节我用Python做了个学生点名系统送给老师当礼物,这回毕业稳了

    今年教师节前夕,我特意用Python做了个学生点名系统,非常好用,送给各科老师、辅导员当节日礼物,老师们都喜滋滋,说平常逃课就原谅我了,我心想,这次毕业应该不是问题了~ 本文背景 …

    Python 2023年11月1日
    040
  • Python-爬虫基础七-原理

    爬虫的基本原理 爬虫概述 简单来说,爬虫就是获取网页并提取和保存信息的自动化程序。 可以将爬虫总结为4个步骤: 1.获取网页 爬虫首先要做的工作就是获取网页,也就是获取网页的源代码…

    Python 2023年6月12日
    0106
  • 用Python做一个中秋抢购月饼的脚本

    ; 序言 每逢佳节倍思亲,想买个东西给家里,结果发现手速不够,网速不够快,没有时间下单等等各种原因导致最后想买的东西售罄了… 甚至跟你一起抢购的可能是脚本,太真实了! …

    Python 2023年11月1日
    035
  • 内部类调用外部类的this方法

    posted @2022-08-29 20:05 司徒小夜 阅读(3 ) 评论() 编辑 Original: https://www.cnblogs.com/stblack/p/1…

    Python 2023年6月11日
    062
  • python 包之 sched 事件调度器教程

    把你要做的事情交给系统吧 一、延迟运行事件 在一个延迟或规定时间之后执行事件,需要采用enter()方法,参数如下: 间隔时间 ( 具体值决定与delayfunc,这里为秒 ) 优…

    Python 2023年6月10日
    072
  • Java实现超市管理系统(含数据库)

    序言: 学Java已经有几个月了,上一次总结是针对GUI界面写的简易计算器,实现加减乘除功能以及计算器标准型和科学型之间的转换,有兴趣可以看看 Java混合计算器以及界面切换 . …

    Python 2023年10月27日
    022
  • PCA(主成分分析法)的Python代码实现(numpy,sklearn)

    PCA设法将原来众多具有一定相关性的属性(比如p个属性),重新组合成一组相互无关的综合属性来代替原属性。通常数学上的处理就是将原来p个属性做线性组合,作为新的综合属性。 PCA 中…

    Python 2023年8月30日
    047
  • 机器学习强基计划0-3:数据集核心知识串讲,构造方法解析

    目录 0 写在前面 1 数据集是什么? 2 真相与泛化性 3 数据集的分类 4 数据集的构造方法 * 4.1 留出法 4.2 k k k 折交叉验证 4.3 自助法 ; 0 写在前…

    Python 2023年8月3日
    040
  • Python自动化测试之PyTest二次开发HOOK函数详解

    一、HOOK函数详解 HOOK函数的定义HOOK=钩子钩子函数:1、是个函数,在系统消息触发时被系统调用2、不是用户自己触发的3、使用时直接编写函数体4、钩子函数的名称是确定,当系…

    Python 2023年9月10日
    060
  • Python-matplotlib制图04-添加图名称和坐标轴名称

    人的一生只有自己可以为自己设限,所以放开手脚尽管去做吧! Python-matplotlib制图04-添加图名称和坐标轴名称 前言 * 1. 概述 2. 版本 – 2….

    Python 2023年8月31日
    047
  • python 常用的8种经典数据结构

    python原生数据结构:元组Tuple(),列表List[],集合Set{},字典Dictionary{A:B}; NumPy包中的数据结构:数组Ndarray(带多种操作),矩…

    Python 2023年8月22日
    044
  • #40 AI-001-火爆全网的聊天机器人ChatGPT能做什么

    #40 AI-001-火爆全网的聊天机器人ChatGPT能做什么 11月30日,OpenAI推出了一个名为ChatGPT的AI聊天机器人,可以供公众免费测试, 短短几天就火爆全网。…

    Python 2023年11月4日
    044
  • Pandas分类,&绘图, &时间序列

    categorical data是指分类数据:数据类型为:男女、班级(一班、二班)、省份, 使用赋值法给变量赋值,例如(男=1,女=0),数字1, 0之间没有大小之分,不能认为1是…

    Python 2023年8月18日
    035
  • numpy 学习之:矩阵 array 和坐标矩阵 meshgrid 的区别

    矩阵 矩阵中的每一个位置(i,j)的 value 值,都代表了这个矩阵在这一点的值的大小,比如说我们可以用A A A 来表示一个矩阵 arr,然后我们说A i , j = 5 A_…

    Python 2023年8月29日
    047
  • data analysis and predict

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年11月5日
    040
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球