Matplotlib数据可视化实战-1数据可视化Matplotlib基础

1.1绘图的一般过程:

1.导入相关库

2.生成、读入或计算得到数据;

3.根据需要绘制折线图、散点图、柱状图、饼状图、雷达图、箱线图、三维曲线/曲面以及极坐标系图形;

4.根据需要设置图形属性;

5.显示或保存绘图结果。

例如:

import pandas as pd  
import matplotlib.pyplot as plt  
  
# 读取CSV文件  
data = pd.read_csv('your_data.csv')  # 替换为你的CSV文件路径  
  
# 假设CSV文件有两列数据,列名为'x'和'y'  
x_data = data['x']  
y_data = data['y']  
  
# 绘制图形  
plt.plot(x_data, y_data)  
  
# 添加标题和坐标轴标签  
plt.title('My Data Plot')  
plt.xlabel('X Axis')  
plt.ylabel('Y Axis')  
  
# 显示网格  
plt.grid(True)  
  
# 显示图形  
plt.show()

1.2图形属性设置

1.设置坐标轴标签:使用matplotlib.pyplot模块的xlabel()、ylabel()函数或轴域的set_xlabel()、set_ylabel()方法;

2.设置坐标轴刻度:使用matplotlib.pyplot模块的xticks()、yticks()函数或轴域set_xticks()、set_yticks()方法;

3.设置图例:使用matplotlib.pyplot模块的legend()函数或轴域的同名方法;

4.设置标题:使用matplotlib.pyplot模块title()、suptitle()函数或轴域的set_title()方法。

1.3显示中文字符

Matplotlib默认情况下无法直接显示中文字符,如果图形中需要显示中文字符,可以使用import matplotlib.pyplot as plt 导入模块pyplot,然后查看plt.rcParams字典中的当前值并进行必要的修改,也可以通过pyplot模块的xlabel()、ylabel()、xticks()、yticks()、title()等函数或轴域(也称子图)对象对应的方法的fontproperties参数对坐标轴标签、坐标轴刻度、标题单独进行设置;如需设置图例中的中文字符可以通过legend()函数的prop参数进行设置。

使用下面的代码可以查看所有的可用字体。

from matplotlib.font_manager import fontManager

names =sorted([f.name for f in fontManager.ttflist])

for name in names:
    print(name)

结果输出(部分展示):

Arial

Arial

Arial

Arial

Arial

Bahnschrift

Calibri

Calibri

Calibri

Calibri

Calibri

Calibri

Cambria

Cambria

Cambria

Cambria

Candara

Candara

Candara

Candara

Candara

Candara

Comic Sans MS

Comic Sans MS

Comic Sans MS

Comic Sans MS

Consolas

Consolas

Consolas

Consolas

Constantia

Constantia

Constantia

Constantia

Corbel

Corbel

Corbel

Corbel

Corbel

Corbel

Courier New

Courier New

Courier New

Courier New

DejaVu Math TeX Gyre

DejaVu Sans

DejaVu Sans

DejaVu Sans

DejaVu Sans

DejaVu Sans Display

DejaVu Sans Mono

DejaVu Sans Mono

DejaVu Sans Mono

DejaVu Sans Mono

DejaVu Serif

DejaVu Serif

DejaVu Serif

DejaVu Serif

DejaVu Serif Display

DengXian

DengXian

DengXian

Ebrima

Ebrima

FZCaiYun-M09

FZCuYuan-M03

FZDaBiaoSong-B06

FZDaHei-B02

FZFangSong-Z02

FZHei-B01S

FZKai-Z03

FZNew BaoSong-Z12

FZNew ShuTi-S08

FZXiDengXian-Z06

FZXiQian-M15

FZXiYuan-M01

FZXiaoBiaoSong-B05

FZXiaoBiaoSong-B05S

FZXingKai-S04

FZZhongDengXian-Z07

FZZhongQian-M16

FZZhunYuan-M02

FangSong

FangSong_GB2312

Franklin Gothic Medium

Franklin Gothic Medium

Gabriola

Gadugi

Gadugi

Georgia

Georgia

Georgia

Georgia

HoloLens MDL2 Assets

注意:在进行可视化时,应尽量避免仅仅依赖于颜色的不同来区分同一图形中的多个线条、柱或面片,还应借助于线型、线宽、端点符号、填充符号等属性来提高区分度。【因为不是总能保证有彩色打印机】

在绘图中,同一组数据可以使用不同形式的图形进行可视化,既可以绘制折线图,也可以绘制柱状图、散点图、饼状图等其他图形。

1.4绘图结果显示或保存

绘制图形并设置外围属性之后可以调用pyplot模块的show()函数直接显示图形,也可以使用savefig()函数或图形对象的同名方法保存图片文件。

savefig()函数完整用法如下:

savefig(fname, dpi=None, facecolor='w', edgecolor='w',  
        format=None, transparent=False, bbox_inches=None, pad_inches=0.1,  
        frameon=None, orientation='portrait', papertype=None,  
        format_kw=None, metadata=None)

参数说明

  • fname :文件名或类似文件的对象。可以是文件的路径(如 'figure.png''path/to/figure.pdf'),或者是任何具有 write() 方法的对象,比如 BytesIO。
  • dpi :图像的分辨率,即每英寸的点数。如果设置为 None,则默认使用保存格式的默认分辨率。
  • facecoloredgecolor:图像的背景色和边框色。默认为白色。
  • format :文件格式。如果未指定,Matplotlib 会根据提供的文件名推断格式。例如,如果 fname'figure.png',则格式是 'png'
  • transparent :如果为 True,则图像的背景将是透明的。这通常与 facecoloredgecolor 设置为 'none' 一起使用。
  • bbox_inches :一个 Bbox 对象,或者 'tight''standard'。用于确定保存图像时考虑的图形区域。'tight' 会裁剪图形周围的空白,'standard' 会使用图形的完整区域。
  • pad_inches:在保存图像时,在图形周围添加的额外空白(以英寸为单位)。
  • frameon :是否绘制图形框架。如果设置为 None,则使用当前图形的 frameon 设置。
  • orientationpapertype:这些参数主要用于 PostScript 和 PDF 输出,用于控制页面的方向和类型。
  • format_kw:一个字典,包含特定于输出格式的额外关键字参数。例如,对于 JPEG 图像,你可以设置压缩质量。
  • metadata:一个字典,包含要保存到文件中的元数据。

例如:

import matplotlib.pyplot as plt
import numpy as np

# 创建一些示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 绘制图形
plt.plot(x, y)
plt.title('Sine Curve')
plt.xlabel('x')
plt.ylabel('y')

# 保存图形为 PNG 文件
plt.savefig('sine_curve.png', dpi=300)

# 显示图形(可选)
plt.show()

1.5 Matplotlib绘图风格样式

Matplotlib绘图风格样式很多,下列代码列出了所有可用的样式。

import matplotlib.pyplot as plt
plt.style.available
print(plt.style.available)

结果输出:

['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark', 'seaborn-dark-palette', 'seaborn-darkgrid', 'seaborn-deep', 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 'seaborn-poster', 'seaborn-talk', 'seaborn-ticks', 'seaborn-white', 'seaborn-whitegrid', 'tableau-colorblind10']

下面的举例将演示如何指定图形演示,图1.5.1和图1.5.2分别演示默认样式和fivethirtyeight两种样式的效果,其他样式大家可以自行测试。

1.5.1默认样式

import numpy as np
import matplotlib.pyplot as plt


x = np.arange(0,7,0.01)
y = np.sin(x)
plt.plot(x,y)
plt.show()

1.5.2指定样式

import numpy as np
import matplotlib.pyplot as plt

#指定图形样式
plt.style.use('fivethirtyeight')
x = np.arange(0,7,0.01)
y = np.sin(x)
plt.plot(x,y)
plt.show()
相关推荐
jiao000012 小时前
数据结构——队列
c语言·数据结构·算法
迷迭所归处3 小时前
C++ —— 关于vector
开发语言·c++·算法
leon6253 小时前
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
开发语言·算法·matlab
CV工程师小林3 小时前
【算法】BFS 系列之边权为 1 的最短路问题
数据结构·c++·算法·leetcode·宽度优先
Navigator_Z4 小时前
数据结构C //线性表(链表)ADT结构及相关函数
c语言·数据结构·算法·链表
Aic山鱼4 小时前
【如何高效学习数据结构:构建编程的坚实基石】
数据结构·学习·算法
天玑y4 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
sjsjs114 小时前
【数据结构-一维差分】力扣1893. 检查是否区域内所有整数都被覆盖
数据结构·算法·leetcode
redcocal4 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
码了三年又三年5 小时前
【算法】滑动窗口—找所有字母异位词
算法