利用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()
文章出处登录后可见!
已经登录?立即刷新