Matplotlib自定义统计图比例

简介: 图形的比例对于统计图而言至关重要,好的图形比例可以让人方便的获取图形中相关数据间的关系,因此设置图形比例对于统计图而言是至关重要的,本文介绍如何使用Maplotlib修改统计图比例。

等比例缩放坐标轴

默认情况下,Matplotlib对图形的两个轴使用不同的比例,在系列教程自定义坐标轴中,我们已经看到可以使用 plt.axis('scaled') 来使坐标轴具有相同比例,这里我们介绍另外一种方法,通过 Axes 对象修改坐标轴比例。

importnumpyasnpfrommatplotlibimportpyplotaspltt=np.linspace(0, 2*np.pi, 1024)
plt.axes().set_aspect('equal')
plt.plot(2.*np.cos(t), np.sin(t), c='c', lw=1.5)
plt.show()

等效于:

importnumpyasnpfrommatplotlibimportpyplotaspltt=np.linspace(0, 2*np.pi, 1024)
plt.plot(2.*np.cos(t), np.sin(t), c='c', lw=1.5)
plt.axis('scaled')
plt.show()

绘图86.png

可以看到我们绘制的椭圆,其中长轴的长度是短轴的两倍,而通过修改坐标轴的比例,Matplotlib渲染的椭圆也具有相同的比例。

Tips:plt.axes() 函数返回 Axes 对象的一个实例,Axes 实例有一个 set_aspect 方法,将其设置为"equal"则两个轴使用相同的比例。

如果我们不进行此设置,则所绘制的椭圆则如下图所示,看起来长轴的长度并非短轴的两倍。

importnumpyasnpfrommatplotlibimportpyplotaspltt=np.linspace(0, 2*np.pi, 1024)
plt.plot(2.*np.cos(t), np.sin(t), c='c', lw=1.5)
plt.show()

绘图87.png

设置图形比例

当我们需要将图形用于期刊出版物或网站时,可能需要具有特定纵横比的图形。

importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(-10, 10, 1000)
y_1, y_2=np.sinc(x), np.cos(x)
plt.figure(figsize=(10.24, 2.56))
plt.plot(x, y_1, c='c', lw=1.25)
plt.plot(x, y_2, c='m', lw=1.25)
plt.show()

绘图88.png

Tips:plt.figure() 函数用于创建一个新的 Figure 实例,一个 Figure 对象表示一个图形整体。通常,此对象是在隐式创建的。但是,通过显式地创建 Figure 对象,我们可以控制图形的各个方面,其中 figsize 参数允许我们指定 Figure 对象大小。

设置坐标轴范围

默认情况下,Matplotlib会在两个坐标轴方向上查找数据的最小值和最大值,并进行适当的扩展,用作绘制数据的范围。但是,有时需要手动设置图形的坐标轴范围,以便更好地查看数据的极值。

importnumpyasnpfrommatplotlibimportpyplotaspltx=np.linspace(-6, 6, 1024)
plt.ylim(-.5, 1.5)
plt.plot(x, np.sinc(x), c='c')
plt.show()

绘图89.png

Tips:plt.xlim() 和 plt.ylim() 分别用于控制 x 轴和 y 轴的范围,其接受参数用于设置坐标轴范围的最大值和最小值。

插入子图

在一个图形中嵌入的小图形有助于显示图形的细节,或者也可以说,有助于强调图形的特定部分。与使用多个子图进行的合成有所不同,这种插入子图,其子图是图形的一部分,而多个子图进行的合成中,子图间是彼此独立的,抽象的讲解太过复杂,看一个示例就能一目了然了。

importnumpyasnpfrommatplotlibimportpyplotaspltx=np.linspace(-6, 6, 1024)
y=np.sinc(x)
x_detail=np.linspace(-2, 2, 1024)
y_detail=np.sinc(x_detail)
plt.plot(x, y, c='c')
sub_axes=plt.axes([.6, .6, .25, .25])
sub_axes.plot(x_detail, y_detail, c='m')
plt.setp(sub_axes)
plt.show()

绘图90.png

为了插入子图,我们首先在图上创建一个子区域:

sub_axes=plt.axes([.6, .6, .25, .25])

在图形坐标的表示中:(0, 0) 是整个图形的左下角,(1, 1) 是右上角,子区域由四个值定义——区域左下角的坐标及其尺寸。

一旦定义了子区域,我们就有了一个 Axes 实例,然后就可以在其中绘制所需图形。最后,我们需要在 Axes 实例上调用 plt.setp() 显示子图:

plt.setp(sub_axes)

Tips:可以创建的子图数量并没有限制。

相关文章
|
11月前
|
数据可视化 Python
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
175 0
|
4月前
|
搜索推荐 数据可视化 Python
Matplotlib高级技巧:自定义图表样式与布局
【4月更文挑战第17天】本文介绍了Matplotlib的高级技巧,包括自定义图表样式和布局。通过设置`color`、`linestyle`、`marker`参数,可以改变线条、散点的颜色和样式;使用自定义样式表实现整体风格统一。在布局方面,利用`subplots`创建多子图,通过`gridspec`调整复杂布局,`subplots_adjust`优化间距,以及添加图例和标题增强可读性。掌握这些技巧能帮助创建更具吸引力的个性化图表。
|
存储 人工智能 数据可视化
Python Matplotlib库:统计图补充
上两期我们讲了 Matplotlib 库的基本语法和基本绘图展示。这期我们来说说如何用 Matplotlib 库绘制常用统计图。用hist()方法来绘制直方图。用boxplot()方法来绘制箱线图。用errorbar()方法来绘制误差条图。用violinplot()方法来绘制小提琴图。用eventplot()方法来绘制尖峰栅格图。用hist2d()方法来绘制二维直方图/散点密度图。用hexbin()方法来绘制Hexbin散点图。用pie()方法来绘制扇形图。
220 0
Python Matplotlib库:统计图补充
|
数据可视化 Python
可视化库Matplotlib-折线统计图
可视化库Matplotlib-折线统计图
可视化库Matplotlib-折线统计图
|
API Python
Matplotlib绘制3D统计图
在2D统计图统计图中再添加一个维度可以展示更多信息。而且,在进行常规汇报或演讲时,3D图形也可以吸引更多的注意力。在本文中,我们将探讨利用Matplotlib绘制三维统计图。
1873 1
Matplotlib绘制3D统计图
|
Python
Matplotlib添加自定义形状
绘制图形时我们还需要绘制复杂形状,以使统计图看起来更加高级,考虑到这一需求,Matplotlib提供了大量自定义形状的函数,利用可以在统计图中添加各种复杂形状,以使得所绘制的统计图更加具有高级感。
1171 0
Matplotlib添加自定义形状
|
Python
Matplotlib自定义样式绘制精美统计图
matplotlib提供的所有绘图都带有默认样式,但有时需要自定义绘图的颜色和样式,以绘制更加符合审美要求的图像。matplotlib的设计考虑到了此需求,很容易调整matplotlib图形的样式。
806 0
Matplotlib自定义样式绘制精美统计图
|
存储 索引 Python
Matplotlib使用自定义颜色绘制统计图
matplotlib 提供的所有绘图都带有默认样式,但有时可能需要自定义绘图的颜色和样式,以对绘制更加精美、符合审美要求的图像。
1565 0
Matplotlib使用自定义颜色绘制统计图
|
Python 定位技术
Matplotlib 中文用户指南 6 自定义 matplotlib
自定义 matplotlib 原文:Customizing matplotlib 译者:飞龙 协议:CC BY-NC-SA 4.0 使用样式表自定义绘图 style包为易于切换的绘图『样式』增加了支持,它们与matplotlibrc文件参数相同。
763 0
|
索引 Python
Matplotlib 中文用户指南 3.3 使用 GridSpec 自定义子图位置
使用 GridSpec 自定义子图位置 原文:Customizing Location of Subplot Using GridSpec 译者:飞龙 协议:CC BY-NC-SA 4.0 GridSpec 指定子图将放置的网格的几何位置。
1326 0