Study:day11-数据可视化之Matplotlib模块

news/2024/10/15 19:35:22/

文章目录

  • Study:day11-数据可视化之Matplotlib模块
    • 1.1 Matplotlib概述
      • 1.1.1 绘图初始
    • 1.2 绘图主题的使用
      • 主题的使用

Study:day11-数据可视化之Matplotlib模块

  • 学术图表:学术图表绘制
    • Matplotlib模块(核心)
    • Seaborn模块(核心)
    • plotly模块/ggplot/basemap
    • Bokeh模块
  • 商业图标:商业图表绘制
    • pyecharts模块(核心)
    • floium地理图表可视化

1.1 Matplotlib概述

python里面的一个可视化模块,用于创建各种类型的静态或者动态图表,也可以创建各种的图表,折线图,散点图,柱形图,饼图,箱线图,热力图,它可以和Numpy、Pandas等模块配合使用,也可以单独使用。

  1. 图表主题的使用
  2. 字体的处理
  3. 学习图表的绘制

需要安装的软件:Tex Live /MikTex(可以尝试安装):可以让我们输出的图片的质量更高,更规范

1.1.1 绘图初始

import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import sysprint('Python version:', sys.version)
print('Pandas version:', pd.__version__)
print('Numpy version:', np.__version__)
print('Matplotlib version:', matplotlib.__version__)
Python version: 3.12.3 | packaged by conda-forge | (main, Apr 15 2024, 18:20:11) [MSC v.1938 64 bit (AMD64)]
Pandas version: 2.2.2
Numpy version: 1.26.4
Matplotlib version: 3.9.2
x = np.arange(0.0, 2.0, 0.01)
y = np.sin(2 * np.pi * x + 1)
z = np.cos(2 * np.pi * x + 1)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 由于第四步:中文字体支持不友好,因此设置全局字体为黑体
plt.rcParams['axes.unicode_minus'] = False  # 由于坐标轴的负数符号不正常显示,因此对其进行调整
plt.figure(figsize=(12, 6), dpi=100)  # 第一步创建画布
plt.plot(x, z, label='z=cos(x)')
plt.plot(x, y,color='red',  # 设置线条的颜色linewidth=2.0,  # 设置线条的粗细linestyle='--',  # 设置线条的样式label='y=sin(2 * np.pi * x + 1)+1',  # 给图标起名称)  # 第二步绘制基本图形plt.xlabel('x轴')  # 第四步:开始图表的修饰,设置标签的名称
plt.ylabel('y轴')  # 设定y轴的名称
plt.title('This is figure title')  # 设定图标的标题
plt.grid()  # 设置网格线
plt.xlim(0, 2)  # 设置x轴的范围
plt.ylim(-1.25, 1)  # 设置y轴的范围
plt.legend(loc=2)  # 设置图例,由于没有名字,需要回到第二步,给图表设置一个名称plt.savefig('./figure/day11/1.png', dpi=200)
plt.show()  # 第三步展示

在这里插入图片描述

  • 背景不好看/背景不是透明的/图片存在白边
  • 字体都是一样的
  • 字体的大小都是一样的
  • 颜色都是默认的
  • 数学公式渲染的不是很好
  • 如果包含多条线如何绘制.
  • 图例的位置
y1 = np.cos(2 * np.pi * x   + 1 ) - .2
plt.figure(figsize=(8,5),dpi=100) # 1. 第一步创建画布
plt.plot(x,y,  # 2. 第二步: 绘制基本都图形color='red', # 4.8 折线图线条的颜色, 也可以使用c代替如:  c = 'cyan'linewidth = 1.2, # 4.9 调整线条灯粗细label = 'y = sin( 2 * pi * x + 1) - 1', # 4.7- : 给图表起一个名称,)
plt.plot(x,y1,  # 2-new. 第二步-new: 绘制第二条折线基本都图形color='orange', # 4.8 折线图线条的颜色, 也可以使用c代替如:  c = 'cyan'linewidth = 1.2, # 4.9 调整线条灯粗细linestyle = 'dotted',label = 'y1 = cos( 2 * pi * x + 1) - 1', # 4.7- : 给图表起一个名称,)
plt.xlabel('这是测试的x轴名称') # 4.1 第四步: 开始图表的修饰,设置标签的名称.
plt.ylabel('这是测试的y轴名称') # 4.2 添加y轴坐标轴名称
plt.title('This is figure title') # 4.3 添加图标的标题
plt.grid() # 4.4 添加网格线
plt.xlim(0,2) # 4.5 调整x轴刻度的范围
plt.ylim(-1.25, 1.25) # 4.6 调整y轴的刻度范围
plt.legend(loc=2,)  # 4.7 添加图表的图例,由于图表没有名称,因此需要回到第二步,添加图表的名称
plt.savefig('./figure/day11/2.png',dpi=200) # 最后一步,才是图表的保存.必须放到图形展示的前面
plt.show() # 3. 第三步: 展示图形

在这里插入图片描述

  1. 创建画布
  2. 绘制基本都图形
  3. 展示图表
  4. 添加图表元素:x轴名称/y轴名称/网格线/标题/图例
  5. 修饰图表/美化图表: 设计图形本身的一些样式,比如颜色,线条灯粗细,线条灯类型,标题字体大小等等
  6. 图形的保存,图形的保存必须要在图形显示的前面,否则保存的图像是一个空白

在这里插入图片描述

1.2 绘图主题的使用

  • 内置主题
  • 第三方主题(商业): matplotx : pip install matplotx
  • 第三方主题(学术): scienceplot: pip install scienceplots
print(plt.style.available)
['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn-v0_8', 'seaborn-v0_8-bright', 'seaborn-v0_8-colorblind', 'seaborn-v0_8-dark', 'seaborn-v0_8-dark-palette', 'seaborn-v0_8-darkgrid', 'seaborn-v0_8-deep', 'seaborn-v0_8-muted', 'seaborn-v0_8-notebook', 'seaborn-v0_8-paper', 'seaborn-v0_8-pastel', 'seaborn-v0_8-poster', 'seaborn-v0_8-talk', 'seaborn-v0_8-ticks', 'seaborn-v0_8-white', 'seaborn-v0_8-whitegrid', 'tableau-colorblind10']
plt.rcParams['font.sans-serif'] = 'Times New Roman'
plt.rcParams['font.size'] = 14
# 使用内置的主题进行图表的绘制,注意这里可以同时传入多个主题,
with plt.style.context(['fast','seaborn-v0_8-colorblind']):plt.figure(figsize=(10,6),dpi=100) # 1. 第一步创建画布plt.plot(x,y,label='y = sin( 2 * pi * x + 1) - 1')plt.plot(x,y1, label='y1 = cos( 2 * pi * x + 1) - 1')plt.xlabel('这是测试的x轴名称',fontdict={'family':'simhei'})  # 4.1 第四步: 开始图表的修饰,设置标签的名称.plt.ylabel('这是测试的y轴名称',fontdict={'family':'simhei'})  # 4.2 添加y轴坐标轴名称plt.title('This is figure title')plt.ylim(-1.25,1.26)plt.xlim(0,2)plt.grid(ls='dotted',lw=1.5,color='#d3e3fd')plt.legend(loc=1)plt.savefig('./figure/day11/first-with-style.png',dpi=200)plt.show()  # 3. 第三步: 展示图形

在这里插入图片描述

import matplotx
with plt.style.context(matplotx.styles.pitaya_smoothie['light']):plt.figure(figsize=(10,6),dpi=100) # 1. 第一步创建画布plt.plot(x,y,label='y = sin( 2 * pi * x + 1) - 1')plt.plot(x,y1, label='y1 = cos( 2 * pi * x + 1) - 1')plt.xlabel('这是测试的x轴名称',fontdict={'family':'simhei'})  # 4.1 第四步: 开始图表的修饰,设置标签的名称.plt.ylabel('这是测试的y轴名称',fontdict={'family':'simhei'})  # 4.2 添加y轴坐标轴名称plt.title('This is figure title')plt.ylim(-1.25,1.26)plt.xlim(0,2)plt.legend(loc=1)plt.savefig('./figure/day11/2-with-style.png',dpi=200)plt.show()  # 3. 第三步: 展示图形

在这里插入图片描述

with plt.style.context(matplotx.styles.dracula):plt.figure(figsize=(10,6),dpi=100) # 1. 第一步创建画布plt.plot(x,y,label='y = sin( 2 * pi * x + 1) - 1')plt.plot(x,y1, label='y1 = cos( 2 * pi * x + 1) - 1')plt.xlabel('这是测试的x轴名称',fontdict={'family':'simhei'})  # 4.1 第四步: 开始图表的修饰,设置标签的名称.plt.ylabel('这是测试的y轴名称',fontdict={'family':'simhei'})  # 4.2 添加y轴坐标轴名称plt.title('This is figure title')plt.ylim(-1.25,1.26)plt.xlim(0,2)plt.legend(loc=1)plt.savefig('./figure/day11/3-with-style.png',dpi=200)plt.show()  # 3. 第三步: 展示图形

在这里插入图片描述

plt.style.use(matplotx.styles.dracula) # 全局主题的使用
plt.figure(figsize=(10,6),dpi=100) # 1. 第一步创建画布
plt.plot(x,y,label='y = sin( 2 * pi * x + 1) - 1')
plt.plot(x,y1, label='y1 = cos( 2 * pi * x + 1) - 1')
plt.xlabel('这是测试的x轴名称',fontdict={'family':'simhei'})  # 4.1 第四步: 开始图表的修饰,设置标签的名称.
plt.ylabel('这是测试的y轴名称',fontdict={'family':'simhei'})  # 4.2 添加y轴坐标轴名称
plt.title('This is figure title')
plt.ylim(-1.25,1.26)
plt.xlim(0,2)
plt.legend(loc=1)
plt.savefig('./figure/day11/4-with-style.png',dpi=200)
plt.show()  # 3. 第三步: 展示图形

在这里插入图片描述

主题的使用

  • 局部使用: with plt.style.context(matplotx.styles.dracula):
  • 全局使用: plt.style.use(matplotx.styles.dracula) # 全局主题的使用

全局使用,意味着接下来所有的图表都是用的全局设定的主题,所有图表都一样

局部使用,意味着,你使用的主题,只针对当前的图表生效.


http://www.ppmy.cn/news/1539581.html

相关文章

leetcode15:三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1&a…

文献阅读:通过深度神经网络联合建模多个切片构建3D整体生物体空间图谱

文献介绍 文献题目: 通过深度神经网络联合建模多个切片构建3D整体生物体空间图谱 研究团队: 杨灿(香港科技大学)、吴若昊(香港科技大学) 发表时间: 2023-10-19 发表期刊: Nature M…

JAVA开发环境配置(window系统安装java)

要运行java代码,需要配置JAVA的运行环境,主要以window系统安装java为主。 window系统安装java 下载JDK 首先我们需要下载 java 开发工具包 JDK,下载地址:Java Downloads | Oracle,在下载页面中根据自己的系统选择对应…

测量误差相关知识(一)

1 测量误差的定义 误差测得值-真值 2 真值的理解 真值的特性: 近似可知性:只有少数特殊情况下,真值是可知的,如三角形内角和180度。可变性:真值随时间和空间而变化 真值类型: 理论真值约定真值&#…

24软考信息系统监理师考前冲刺20问!你能答上来多少?

距离下半年软考考试还剩不到一个月!在此提醒各位考生不要只知道盲目啃书!由于今年的软考知识点繁杂,很难抓住重心! 这里给大家准备了信息系统监理师考前冲刺20问,帮助各位更好的理解重要考点~供考生备考使用&#xff0…

Vue3中提到的Tree-shaking

我们知道,Vue3中提到一个叫Tree-shaking的东西,其实也并不是一个新的东西,有人称之为"摇树优化",什么意思? 按照作者的原话解释,Tree-shaking其实就是:把无用的模块进行“剪枝”&…

7.并发编程之并发安全问题

1 线程安全性 什么是线程安全性?可以这么理解, 我们所写的代码在并发情况下使用 时,总是能表现出正确的行为;反之,未实现线程安全的代码,表现的行为是不可预知的,有可能正确,而绝大多…

03 视频编解码器

1. 基本概念和原理 1.1 什么是视频编解码器 视频编解码器(Video Codec)是一种用于压缩或解压数字视频的软件、硬件或两者的结合。"编解码器"这个术语是"编码器"(encoder)和"解码器"(decoder)的组合。 编码器负责压缩(编码)视频数据,以便于存储…