绘制局部放大图

1.导入数据库

import seaborn as sns
sns.set_style('whitegrid')
import numpy as np
import matplotlib as mpl
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

Seaborn库简介:

Seaborn是一个基于 Python 的数据可视化库,它建立在 Matplotlib 之上,提供了一种高级的接口,用于制作统计图形。Seaborn 旨在使绘制复杂的图表变得更简单,同时保持对图表细节的控制能力,非常适合用于数据探索和分析。以下是 Seaborn 的一些主要特性:

  • 美观的默认主题:Seaborn 拥有一套美观的默认图形样式,可以快速生成看起来很专业的图表。

  • 支持多种图表类型:Seaborn 支持多种图表类型,包括但不限于散点图、条形图、箱线图、小提琴图、热力图、联合图等。

  • 数据集集成:Seaborn 内置了几个可以直接用于绘图的数据集,方便用户快速开始绘图。

  • 灵活的图表定制:Seaborn 允许用户定制图表的几乎每个方面,包括颜色、尺寸、标签等。

  • 交互式图表:Seaborn 可以与 Jupyter Notebook 等工具集成,生成交互式图表。

  • Facet Grids:Seaborn 提供了一种称为 Facet Grids 的功能,允许用户在一个网格中绘制多个图表,以展示数据的不同子集。

  • 颜色映射:Seaborn 提供了一套丰富的颜色映射系统,可以用于创建美观且信息丰富的图表。

  • 调用方式:import seaborn as sns >> sns.set_style('whitegrid')

2.设置图纸参数

fig,ax = plt.subplots(figsize = (10,6))
x = np.linspace(-0.50,1.,1000)

3.外部图形

ax.plot(x,x**2)
ax.plot(x,np.sin(x))
ax.set(xlim = (-0.5,1.0),ylim = (-0.5,1.2))
fig.tight_layout()

4.内部图形

inner_ax = fig.add_axes([0.2,0.55,0.35,0.35])
inner_ax.plot(x,x**2)
inner_ax.plot(x,np.sin(x))
inner_ax.set(title = '放大',xlim = (-0.2,0.2),ylim = (-0.01,0.02),
             yticks = [-0.01,0,0.01,0.02],xticks = [-0.1,0,0.1])
ax.set_title('图形内绘图',fontsize = 20)
plt.show()
mpl.rcParams.update(mpl.rcParamsDefault)

输出结果展示:
image

fig.add_axes()函数说明:

在 Matplotlib 中,fig.add_axes() 是一个方法,用于在给定的图形(Figure)上添加一个或多个轴(Axes)。这个方法允许你指定轴的位置和大小,以下是 fig.add_axes() 方法的一些关键参数:

  • rect: 一个四元组 (left, bottom, width, height),表示轴在图形中的相对位置和大小。这些值通常是在 0 到 1 之间的比例,表示距离图形左下角的位置和轴的宽度与高度。
  • projection: 指定轴的类型,例如 '3d' 表示三维轴。

mpl.rcParams.update()函数简介:

在Matplotlib中,mpl.rcParams.update() 是一个用于更新全局配置设置的方法。Matplotlib 使用一个名为 rcParams 的字典来存储配置参数,这些参数控制着图表的各种外观和行为。应用场景如下:

  • 统一图表风格:在生成多个图表时,使用 rcParams.update() 可以确保所有图表具有一致的风格和外观。

  • 临时更改设置:在绘图脚本中,你可以临时更改某些设置,以查看不同配置对图表外观的影响。

  • 配置文件:你可以将常用的配置参数保存在一个文件中,然后使用 rcParams.update() 从该文件加载配置。

  • 基本用法:

# 更新配置参数
mpl.rcParams.update({
    'font.size': 16,
    'axes.titlesize': 'large',
    'legend.fontsize': 'medium',
    'xtick.labelsize': 'large',
    'ytick.labelsize': 'large',
    'lines.linewidth': 2,
    'figure.figsize': (10, 5),
    'savefig.dpi': 100,
})
# 参数说明
'font.size': 设置默认字体大小。
'axes.titlesize': 设置轴标题的字体大小。
'legend.fontsize': 设置图例中字体的大小。
'xtick.labelsize': 设置x轴刻度标签的字体大小。
'ytick.labelsize': 设置y轴刻度标签的字体大小。
'lines.linewidth': 设置线条的默认宽度。
'figure.figsize': 设置图形的默认大小(宽度和高度,单位为英寸)。
'savefig.dpi': 设置保存图形时的分辨率。
完整代码
#(1)导入数据库
import seaborn as sns
sns.set_style('whitegrid')
import numpy as np
import matplotlib as mpl
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#(2)设置图纸
fig,ax = plt.subplots(figsize = (10,6))
x = np.linspace(-0.50,1.,1000)

# (3)外部图形
ax.plot(x,x**2)
ax.plot(x,np.sin(x))
ax.set(xlim = (-0.5,1.0),ylim = (-0.5,1.2))
fig.tight_layout()

# (3)内部图形
inner_ax = fig.add_axes([0.2,0.55,0.35,0.35])
inner_ax.plot(x,x**2)
inner_ax.plot(x,np.sin(x))
inner_ax.set(title = '放大',xlim = (-0.2,0.2),ylim = (-0.01,0.02),
             yticks = [-0.01,0,0.01,0.02],xticks = [-0.1,0,0.1])

ax.set_title('图形内绘图',fontsize = 20)
plt.show()
mpl.rcParams.update(mpl.rcParamsDefault)

说明:该案例来源于《Python数据分析》

posted @ 2024-07-17 10:54  海唤鱼  阅读(8)  评论(0编辑  收藏  举报