自学内容网 自学内容网

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

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 sys

print('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) # 全局主题的使用

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

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


原文地址:https://blog.csdn.net/weixin_73895683/article/details/142762331

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!