首页 > 其他分享 >Matplotlib绘图

Matplotlib绘图

时间:2024-10-06 21:46:54浏览次数:3  
标签:set Matplotlib dataset plt 可视化 绘图 数据

Python数据可视化

学习目标

  • 知道数据可视化的相关概念
  • 知道Python数据可视化常用库和各自特点
  • 应用Matplotlib,pandas,Seaborn进行数据可视化

1 数据可视化简介

1.1 数据可视化概念

  • 数据可视化是指直观展现数据,它是数据处理过程的一部分。
  • 把数值绘制出来更方便比较。借助数据可视化,能更直观地理解数据,这是直接查看数据表做不到的
  • 数据可视化有助于揭示数据中隐藏的模式,数据分析时可以利用这些模式选择模型

1.2 数据可视化常用库和各自特点

  • Matplotlib(功能强大,代码相对复杂)
    • Matplotlib是Python编程语言的开源绘图库。它是Python可视化软件包中最突出的,使用最广泛的绘图工具。
    • Matplotlib在执行各种任务方面非常高效。可以将可视化文件导出为所有常见格式(PDF,SVG,JPG,PNG,BMP和GIF)。
    • Matplotlib可以创建流行的可视化类型-折线图,散点图,直方图,条形图,误差图,饼图,箱形图以及更多其他类型的图,还支持3D绘图。
    • 许多Python库都是基于Matplotlib构建的,Pandas和Seaborn是在Matplotlib上构建的
    • Matplotlib项目由John Hunter于2002年启动。Matplotlib最初是在神经生物学的博士后研究期间开始可视化癫痫患者的脑电图(ECoG)数据。
  • Pandas (使用简单,功能稍弱)
    • Pandas的绘图功能基于Matplotlib,是对Matplotlib的二次封装
    • Matplotlib绘图时,代码相对复杂,使用Pandas绘制基本图表相对比较简单,更加方便
    • Pandas中常用的数据结构 series 和 dataframe 都有plot()方法,用于绘图
  • Seaborn (推荐使用)
    • Seaborn是基于Matplotlib的图形可视化python开源库
    • Seaborn是在Matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易
    • Seaborn的API设计偏向探索和理解数据

2 Matplotlib绘图

2.1 Matplotlib绘图入门

  • Import Matplotlib
    • Matplotlib.pyplot 包含一系列绘图函数的相关函数
    • 使用Matplotlib需要导入pyplot
import pandas as pd
import matplotlib.pyplot as plt
  • Matplotlib提供了两种方法来作图:状态接口和面向对象

    • 状态接口:
    x = [-3, 5, 7] #准备数据的x轴坐标
    y = [10, 2, 5] #准备数据的y轴坐标
    
    plt.figure(figsize=(15,3)) #figure 创建画布  figsize指定画布大小
    plt.plot(x, y) #plot 绘图
    plt.xlim(0, 10) #xlim 设置x轴坐标的范围
    plt.ylim(-3, 8) #ylim 设置y轴坐标的范围
    plt.xlabel('X Axis',size=20) # 设置x轴标签  size字体大小
    plt.ylabel('Y axis') # 设置y轴标签
    plt.title('Line Plot',size=30) # 设置标题内容, size 字体大小
    plt.show() #显示图片
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • 面向对象
    fig, ax = plt.subplots(figsize=(15,3))  #创建坐标轴对象
    ax.plot(x, y) #调用坐标轴的绘图方法
    ax.set_xlim(0, 10) # 调用坐标轴的设置x轴上下限的方法
    ax.set_ylim(-3, 8) 
    ax.set_xlabel('X axis') # 调用坐标轴的设置x轴标签的方法
    ax.set_ylabel('Y axis',size = 20) # 调用坐标轴的设置y轴标签的方法
    ax.set_title('Line Plot',size = 30) # 调用坐标轴的设置标题的方法
    plt.show() 
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.2 matplotlib 数据可视化案例

  • 通过Anscombe数据集说明数据可视化的重要性
  • Anscombe数据集由英国统计学家Frank Anscombe创建,数据集包含4组数据,每组数据包含两个连续变量。
  • 每组数据的平均值、方差、相关性都相同,但是当它们可视化后,就会发现每组数据的模式明显不同。
import seaborn as sns
anscombe = sns.load_dataset('anscombe') # 有可能连不上网
anscombe = pd.read_csv('data/anscombe.csv') # 资料中提供了这份数据
print(anscombe)

显示结果:

  dataset     x      y
0        I  10.0   8.04
1        I   8.0   6.95
2        I  13.0   7.58
3        I   9.0   8.81
4        I  11.0   8.33
5        I  14.0   9.96
6        I   6.0   7.24
7        I   4.0   4.26
8        I  12.0  10.84
9        I   7.0   4.82
10       I   5.0   5.68
11      II  10.0   9.14
12      II   8.0   8.14
13      II  13.0   8.74
14      II   9.0   8.77
15      II  11.0   9.26
16      II  14.0   8.10
17      II   6.0   6.13
18      II   4.0   3.10
19      II  12.0   9.13
20      II   7.0   7.26
21      II   5.0   4.74
22     III  10.0   7.46
23     III   8.0   6.77
24     III  13.0  12.74
25     III   9.0   7.11
26     III  11.0   7.81
27     III  14.0   8.84
28     III   6.0   6.08
29     III   4.0   5.39
30     III  12.0   8.15
31     III   7.0   6.42
32     III   5.0   5.73
33      IV   8.0   6.58
34      IV   8.0   5.76
35      IV   8.0   7.71
36      IV   8.0   8.84
37      IV   8.0   8.47
38      IV   8.0   7.04
39      IV   8.0   5.25
40      IV  19.0  12.50
41      IV   8.0   5.56
42      IV   8.0   7.91
43      IV   8.0   6.89
  • 数据中的dataset 列,用来区分整个数据集中的子数据集
dataset_1 = anscombe[anscombe['dataset']=='I']
dataset_2 = anscombe[anscombe['dataset']=='II']
dataset_3 = anscombe[anscombe['dataset']=='III']
dataset_4 = anscombe[anscombe['dataset']=='IV']
  • 查看数据的统计分布情况
dataset_1.describe()

显示结果:

xy
count11.00000011.000000
mean9.0000007.500909
std3.3166252.031568
min4.0000004.260000
25%6.5000006.315000
50%9.0000007.580000
75%11.5000008.570000
max14.00000010.840000
dataset_2.describe()

显示结果:

xy
count11.00000011.000000
mean9.0000007.500909
std3.3166252.031657
min4.0000003.100000
25%6.5000006.695000
50%9.0000008.140000
75%11.5000008.950000
max14.0000009.260000
dataset_3.describe()

显示结果:

xy
count11.00000011.000000
mean9.0000007.500000
std3.3166252.030424
min4.0000005.390000
25%6.5000006.250000
50%9.0000007.110000
75%11.5000007.980000
max14.00000012.740000
dataset_4.describe()

显示结果:

xy
count11.00000011.000000
mean9.0000007.500909
std3.3166252.030579
min8.0000005.250000
25%8.0000006.170000
50%8.0000007.040000
75%8.0000008.190000
max19.00000012.500000
  • 从数据的统计量看,变量X,Y,4个子数据集的平均值和标准差基本相同,但是平均值和标准差相同,几个数据集就完全相同么?
# 创建画布
fig = plt.figure(figsize=(16,8))
# 向画布添加子图
#子图有两行两列,位置是1
axes1 = fig.add_subplot(2,2,1)
#子图有两行两列,位置是2
axes2 = fig.add_subplot(2,2,2)
#子图有两行两列,位置是3
axes3 = fig.add_subplot(2,2,3)
#子图有两行两列,位置是4
axes4 = fig.add_subplot(2,2,4)
  • 在创建的各个坐标轴中绘制图表
axes1.plot(dataset_1['x'],dataset_1['y'],'o')
axes2.plot(dataset_2['x'],dataset_2['y'],'o')
axes3.plot(dataset_3['x'],dataset_3['y'],'o')
axes4.plot(dataset_4['x'],dataset_4['y'],'o')
fig

显示结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 为每个子图添加标题
axes1.set_title('dataset_1')
axes2.set_title('dataset_2')
axes3.set_title('dataset_3')
axes4.set_title('dataset_4')
fig

显示结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 为大图添加标题
fig.suptitle('Anscombe Data')
fig

显示结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.3 使用matplotlib绘制统计图

  • 本小节使用seaborn 库的tips数据集,其中包含了某餐厅服务员收集的顾客付小费的相关数据
# 加载tips数据集类
tips = pd.read_csv('data/05_tips.csv')
print(tips.head())

显示结果:

  total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4
  • 单变量

    • 在统计学属于中,‘单变量’(univariate)指单个变量

    直方图

    • 直方图是观察单个变量最常用的方法。这些值是经过"装箱"(bin)处理的
    • 直方图会将数据分组后绘制成图来显示变量的分布状况
    fig = plt.figure()
    axes1 = fig.add_subplot(1,1,1)
    axes1.hist(tips['total_bill'],bins = 10)
    axes1.set_title('Histogram of Total Bill')
    axes1.set_xlabel('Frequency')
    axes1.set_ylabel('Total Bill')
    

    显示结果:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 双变量

    • 双变量(bivariate)指两个变量

    散点图

    • 散点图用于表示一个连续变量随另一个连续变量的变化所呈现的大致趋势
    scatter_plot = plt.figure()
    axes1 = scatter_plot.add_subplot(1,1,1)
    axes1.scatter(tips['total_bill'],tips['tip'])
    axes1.set_title('Scatterplot of Total Bill vs Tip')
    axes1.set_xlabel('Total Bill')
    axes1.set_ylabel('Tip')
    

    显示结果:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3 小结

  • Python常用绘图库
    • Matplotlib,Pandas,Seaborn等
  • Matplotlib绘图步骤
    • 导入Matplotlib.pyplot
    • 准备数据
    • 创建图表,坐标轴
    • 绘制图表
    • 设置标题,x,y轴标题等

标签:set,Matplotlib,dataset,plt,可视化,绘图,数据
From: https://blog.csdn.net/weixin_54514072/article/details/142720823

相关文章

  • Python 高级绘图:探索数据可视化
    在Python中,我们可以使用多种库来进行绘图,实现数据可视化。以下将介绍一些高级的绘图技巧和代码实现: 使用 matplotlib 库进行高级绘图 matplotlib 是一个广泛使用的绘图库,提供了丰富的绘图功能。importmatplotlib.pyplotaspltimportnumpyasnp#生成示例......
  • Matplotlib-实用指南-全-
    Matplotlib实用指南(全)原文:Hands-onMatplotlib协议:CCBY-NC-SA4.0一、Python3简介欢迎大家来到Matplotlib和相关库(如NumPy、Pandas和Seaborn)的激动人心的数据可视化之旅。本章涵盖了Python编程语言的基础知识,包括它的历史、安装和应用。您将编写一些简单的介......
  • matlab绘图函数(二维图形篇1)
    知周所众,MATLAB提供了多种函数来绘制不同类型的图形。以下是一些常用的绘图函数:1.plotplot是MATLAB中最常用的函数之一,用于绘制二维图形。它可以创建线图、散点图、阶梯图等。以下是plot函数的一些常见用法和选项:基本用法绘制单一线条:x=linspace(0,2*pi,100);......
  • Matplotlib 使用 LaTeX 渲染图表中的文本、标题和数学公式
    Matplotlib使用LaTeX渲染图表中的文本、标题和数学公式Matplotlib是一个功能强大的Python库,用于绘制各种高质量的图表和图形。在许多科研和技术文档中,数学公式是不可或缺的一部分,LaTeX提供了精美的数学公式渲染能力。Matplotlib支持通过LaTeX来渲染图表中的文本......
  • 画个心,写个花!Python Turtle库带你玩转创意绘图!
    文章目录前言一、Turtle库基础介绍二、画布设置三、画笔属性设置1.画笔颜色设置2.画笔粗细与速度设置3.画笔形状设置四、画笔移动函数五、画笔控制函数六、实战案例一:“花”字绘制七、实战案例二:心型图案绘制总结前言Python的turtle库是一种简单易用的绘图工具......
  • .NET跨平台绘图基础库--SkiaSharp
    .NET跨平台绘图基础库--SkiaSharp SkiaSharp是一个跨平台的2D图形API,用于.NET平台,基于Google的Skia图形库。它提供了全面的2DAPI,可以在移动、服务器和桌面模型上渲染图像。SkiaSharp可以在多个.NET平台上使用,包括ASP.NETCore、WPF、Winform、MAUI、Avalonia......
  • NX绘图第三章之旋转和拉伸工具的使用
    利用旋转和拉伸工具绘制下图器件1.新建文件首先在文件中点击新建,选择如图模型,文件夹中可包含中文,老版的NX可能存在不能包含中文的情况。2.进入草图模式首先点击图一左上角的拉伸工具,弹出下图对话框。本次图像绘制要先确定基于某个界面,随后鼠标点击xy平面,方向应该为反向一......
  • 【学习笔记】python数据可视化之matplotlib实践第二章
    使用统计函数绘制简单图形1.bar()函数:在x轴上绘制定性数据的分布特征,用于绘制柱状图函数基本参数介绍:plt.bar(x,height,color='c',edgecolor='y',width=0.8,align='center',tick_label=['白菜','卷心菜'],hatch='/')x柱状图的x轴坐标,每个数值对应于一个柱子的......
  • 章16——坦克大战1——绘图、事务
    有关paint方法为什么会被调用JAVA的事件处理机制事件发生的地方和事件处理的地方是不一样的:......
  • .NEET跨平台绘图基础库--SkiaSharp
    SkiaSharp是一个跨平台的2D图形API,用于.NET平台,基于Google的Skia图形库。它提供了全面的2DAPI,可以在移动、服务器和桌面模型上渲染图像。SkiaSharp可以在多个.NET平台上使用,包括ASP.NETCore、WPF、Winform、MAUI、AvaloniaUI和Uno。Skia是个2D向量图形处理函数......