3.3 设置坐标轴的长度和范围

本文介绍了在Python数据分析中如何设置坐标轴的长度和范围,包括自动调整坐标轴大小、添加水平和垂直线、绘制水平带和垂直带以及控制网格属性。通过示例展示了`axis()`、`axhline()`、`axvline()`、`axhspan()`和`axvspan()`等方法的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.3 设置坐标轴的长度和范围

前阵子在跟着课程学习springboot项目,所以以及有好几天没有学习python了,哈哈哈哈~现在的话尽可能每天都合理安排一下学习规划才行。今天将会学习一些与坐标轴范围和长度相关的属性。因为比较简单,所以我们可以直接在控制台上测试运行


工作准备:需要导入这个模块:import matplotlib.pylab as plt

(1)我们用坐标轴的不同属性来测试看看

  • 调用不带参数的axis():plt.axis()
    输出结果如下:在这里插入图片描述
    在交互模式下:
    在这里插入图片描述
    因为在交互模式下,所以显示只有坐标轴的空白图

  • 这里的值分别表示xmin、xmax、ymin和ymax。同样,我们可以设置x轴和y轴的值。

l=[-1,1,-10,10]
plt.axis(l)
Out[7]: (-1.0, 1.0, -10.0, 10.0)

交互模式下:
在这里插入图片描述
(2)说明

1、如果不使用axis()或者其他参数设置,matplotlib会自动使用最小
值,刚好可以让我们在一个图中看到所有的数据点
2、如果设置 axis()的范围比数据集合中的最大值小,matplotlib按照设置执行,这样就无法在图中看到所有的数据点
3、因此,为了避免这种情况发生的一种方法是调用
autoscale()(matplotlib.pyplot.autoscale()) 方法,该方法会计算坐标轴的最佳大小以适应数据的显示

(3)如果我们想对当前图形添加一条直线,我们可以调用matplotlib.pyplot.axhline()或者 matplotlib.pyplot.axvline()

  • axhline()和axvline()方法会根据给定的x和y值相应地绘制出相对于坐标轴的水平线和垂直线
  • axhline()方法

比较重要的参数是y 向位置、xmin 和 xmax

  • axvline()方法

比较重要的参数是 x向位置、ymin和ymax

  • 我们来测试一下
l=[-1,1,-10,10]
plt.axhline()
plt.axvline()
plt.axis(l)
Out[11]: (-1.0, 1.0, -10.0, 10.0)
Out[12]: <matplotlib.lines.Line2D at 0x13ca86fda90>

在这里插入图片描述

plt.axhline(4)
Out[13]: <matplotlib.lines.Line2D at 0x13ca870d048>

在这里插入图片描述
由上面两幅图的对比我们可以知道,在调用这些方法的时候如果不传入参数,就是使用默认值

axhline()绘制了一条y=0的水平线
axvline()绘制了一条x=0的垂直线。

  • 类似地,另外两个相关的方法允许我们添加一个跨坐标轴的水平带(矩形)matplotlib.pyplot.axvspan()

1、axhspan()方法必需的ymin和ymax参数指定了水平带的宽度。同理
2、axvspan()方法必需的xmin和xmax参数指定了垂直带的宽度

  • 测试plt.axvspan(0.3,0.4)

在这里插入图片描述
(4)图形中的网格属性默认是关闭的,但可以很简单地打开和定制化。不带参数调用matplotlib.pyplot.grid()会切换网格的显示状态。

plt.grid()

在这里插入图片描述

(5)另外一些控制参数如下:

  • which:指定绘制的**网格刻度类型(**major、minor 或者 both)
  • axis:指定绘制哪组网格线
### 创建间断坐标轴 在 `Matplotlib` 中创建间断坐标轴可以通过自定义刻度定位器格式化程序来实现。这通常用于当某些区域的数据不重要或为了节省空间而跳过特定区间。 #### 使用 `BrokenAxis` `brokenaxes` 是一个第三方库,可以方便地创建带有断裂效果的图表。如果不想安装额外依赖,则可以直接通过调整主次坐标轴并隐藏部分线条的方式模拟间断的效果: ```python import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1.inset_locator import mark_inset, zoomed_inset_axes import numpy as np fig, ax = plt.subplots(figsize=(8, 6)) f = lambda x : (x ** 3 - 5 * x ** 2 + 6 * x) # 定义两个范围 left_xlims = (-0.5, 1.7) right_xlims = (3.3, 5.5) def plot_section(ax, xlims): """绘制指定区间的函数图像""" x = np.linspace(*xlims, num=100) y = f(x) ax.plot(x, y, &#39;b-&#39;, lw=2) ax.set_xlim(xlims) plot_section(ax, left_xlims) # 插入第二个坐标系 ax_right = zoomed_inset_axes(ax, 1., loc="center", borderpad=-2.) plot_section(ax_right, right_xlims) mark_inset(ax, ax_right, loc1=2, loc2=4, fc="none", ec="0.5") plt.xticks(visible=False) plt.yticks(visible=False) d = .015 # 断裂线长度参数 kwargs = dict(transform=ax.transAxes, color=&#39;k&#39;, clip_on=False) ax.plot((-d,+d),(-d,+d), **kwargs) # top-left diagonal ax.plot((1-d,1+d),(-d,+d), **kwargs) # top-right diagonal kwargs.update(transform=ax_right.transAxes) # switch to the bottom axes ax_right.plot((-d,+d),(1-d,1+d), **kwargs) # bottom-left diagonal ax_right.plot((1-d,1+d),(1-d,1+d), **kwargs)# bottom-right diagonal for spine in ["top", "bottom"]: ax.spines[spine].set_visible(False) ax_right.spines[spine].set_visible(False) plt.show() ``` 此代码片段展示了如何利用内置工具构建视觉上的中断效果[^1]。对于更复杂的场景,建议考虑使用专门设计用来处理此类情况的外部包如 `brokenaxes` 或者探索其他可视化方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值