matplotlib添加行列标题、axes.axis以及axes.xaxis.set_ticklabels相关使用方法

利用matplotlib的axes.set_title添加子图标题

今天同学问我matplotlib进行可视化,如何添加列标题,以下是我写的相关脚本:

import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [3,6,7,9,2]

fig,axes = plt.subplots(2, 2, figsize=(10,6))
for i in range(2):
    # axes[0,i]表示子图第1行第i列
    axes[0,i].plot(x, y)
    # 添加标题
    axes[0,i].set_title('xx_{}'.format(i))
    # axes[1, i] 第2行第i列
    axes[1, i].plot(x, y)
plt.show()

结果如下:

利用axes.axis(“off”)关闭轴刻度:

import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [3,6,7,9,2]

fig,axes = plt.subplots(2, 2, figsize=(10,6))
for i in range(2):
    # 关闭轴刻度
    axes[0, i].axis("off")
    # axes[0,i]表示子图第1行第i列
    axes[0,i].plot(x, y)
    # 添加标题
    axes[0,i].set_title('xx_{}'.format(i))

    axes[1,i].axis("off")
    # axes[1, i] 第2行第i列
    axes[1, i].plot(x, y)
plt.show()

结果如下:
设置列标题:

import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [3,6,7,9,2]

fig,axes = plt.subplots(2, 2, figsize=(10,6))
for i in range(2):
    # 关闭轴刻度
    # axes[0, i].axis("off")
    # axes[0,i]表示子图第1行第i列
    axes[0,i].plot(x, y)
    # 添加标题
    # axes[0,i].set_title('xx_{}'.format(i))
    axes[0,0].set_ylabel("x\nx\nx", rotation=0)

    # axes[1,i].axis("off")
    # axes[1, i] 第2行第i列
    axes[1, i].plot(x, y)
    axes[1,0].set_ylabel("t\nt\nt", rotation=0)
plt.show()

结果如下:

使用axes.xaxis.set_ticklabels([])和axes.yaxis.set_ticklabels([])隐藏刻度值,但是保留坐标轴标签:

fig,axes = plt.subplots(2, 2, figsize=(10,6))
for i in range(2):
    # 关闭轴刻度
    # axes[0, i].axis("off")
    # axes[0,i]表示子图第1行第i列
    axes[0,i].plot(x, y)
    # 添加标题
    # axes[0,i].set_title('xx_{}'.format(i))
    axes[0,0].set_ylabel("x\nx\nx", rotation=0)
    # 隐藏刻度值,但是保留坐标轴标签
    axes[0, i].xaxis.set_ticklabels([])
    axes[0, i].yaxis.set_ticklabels([])

    # axes[1,i].axis("off")
    # axes[1, i] 第2行第i列
    axes[1, i].plot(x, y)
    axes[1, 0].set_ylabel("t\nt\nt", rotation=0)
    # 隐藏刻度值,但是保留坐标轴标签
    axes[1, i].xaxis.set_ticklabels([])
    axes[1, i].yaxis.set_ticklabels([])

plt.show()

结果如下:

以下是参考链接:https://www.cnpython.com/qa/39920 的方法,感觉这个方法更方便,这里贴出代码:

import matplotlib.pyplot as plt

x = [1,2,3,4,5]
y = [3,6,7,9,2]
cols = ['Column {}'.format(col) for col in range(1, 4)]
rows = ['Row {}'.format(row) for row in ['A', 'B', 'C', 'D']]

# 初始化
fig, axes = plt.subplots(nrows=4, ncols=3, figsize=(12, 8))

axes[0, 0].plot(x, y)

plt.setp(axes.flat, xlabel='X-label', ylabel='Y-label')

pad = 5    # in points

for ax, col in zip(axes[0], cols):
    ax.annotate(col, xy=(0.5, 1), xytext=(0, pad),
                xycoords='axes fraction', textcoords='offset points',
                size='large', ha='center', va='baseline')

for ax, row in zip(axes[:, 0], rows):
    ax.annotate(row, xy=(0, 0.5), xytext=(-ax.yaxis.labelpad - pad, 0),
                xycoords=ax.yaxis.label, textcoords='offset points',
                size='large', ha='right', va='center')

fig.tight_layout()
fig.subplots_adjust(left=0.15, top=0.95)

plt.show()

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年5月12日
下一篇 2022年5月12日

相关推荐