Python-Matplotlib可视化(7)——多方面自定义统计图绘制

Tips:使用plt.subplot2grid()可以定义一个R行、C列的网格。然后,我们可以将一个图形渲染到所定义的网格中。

plt.subplot2grid()函数有四个常用参数:

  1. 第一个参数是网格的行数和列数,作为元组传递,例如我们想要一个R行、C列的网格,则需要传递(R,C)。

  2. 第二个参数用于确定图形在网格中的坐标,也作为元组传递。

  3. 可选参数rowspan定义图形将占据多少行。

  4. 可选参数colspan定义图形将占据多少列。

调用plt.subplot2grid()后,对plt绘图的下一次调用将在指定的矩形区域内绘制图形,同理,要在网格的另一个区域中绘制下一个图形,需要再次调用plt.subplot2grid()

在示例中,定义了一个2x4的网格。前两个图形占据了1列、3行,第三个图形占据了两列、一行。一旦绘制了所有的图形,就需要调用pyplot.tight_layout()按照定义自动排列所有图形,确保它们彼此不重叠。

为每个子图添加标题

我们已经可以将多个子图合成在一个图形中,但是每个子图可能还需要有自己的标题,可以使用plt.title()为每个子图添加标题:

import numpy as np

from matplotlib import pyplot as plt

def get_radius(t, params):

m, n_1, n_2, n_3 = params

u = (m * t) / 4

return (np.fabs(np.cos(u)) ** n_2 + np.fabs(np.sin(u)) ** n_3) ** (-1. / n_1)

grid_size = (3, 4)

t = np.linspace(0, 2 * np.pi, 1024)

for i in range(grid_size[0]):

for j in range(grid_size[1]):

params = np.random.randint(1, 20+1, size = 4)

r = get_radius(t, params)

plt.subplot2grid(grid_size, (i, j), rowspan=1, colspan=1)

plt.plot(r * np.cos(t), r * np.sin(t), c = ‘c’)

plt.title(‘%d, %d, %d, %d’ % tuple(params), fontsize = ‘small’)

plt.suptitle(“Example of plt.suptitle”)

plt.tight_layout()

plt.show()

为每个子图添加标题

Tips:plt.title()函数可以为每一个图形提供一个标题,但此时,如果我们需要为整个图形提供一个标题,则应该使用plt.suptitle()函数。

子图合成的另一种方法

上述的子图合成方法具有通用性,可以使用它创建复杂的布局,但如果我们只需要在同一行或同一列中绘制多个子图,则可以使用更简洁的代码:

import numpy as np

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值