python - 注释在 matplotlib 子图中消失
问题描述
我从这个问题的答案中找到了以下用于在子图中标记行和列的方法:Row and column headers in matplotlib's subplots。它工作得很好 - 对于一个空的情节。一旦我将数据添加到任何子图中,该行和列的标签就会消失。我也尝试了这个annotate
解决方案,同样的问题。我不知道如何让这些标签不消失。还有其他人有同样的问题吗?解决方案的想法?(下面的代码。)
(我正在使用 Jupyter 笔记本(.ipynb)。我认为这可能是问题所在,但我使用常规脚本(.py)对其进行了测试,但它也不起作用。)
工作代码和输出:
import matplotlib.pyplot as plt
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))
for ax, col in zip(axes[0], cols):
ax.set_title(col)
for ax, row in zip(axes[:,0], rows):
ax.set_ylabel(row, size='large')
fig.tight_layout()
plt.show()
不工作的代码,输出:
import matplotlib.pyplot as plt
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))
for ax, col in zip(axes[0], cols):
ax.set_title(col)
for ax, row in zip(axes[:,0], rows):
ax.set_ylabel(row, size='large')
plt.subplot(431)
plt.scatter([1],[7]) #sample data
fig.tight_layout()
plt.show()
解决方案
这plt.subplot(431)
是在已经存在的轴之上创建一个子图,因此对该特定对象所做的所有自定义都将被删除。您需要告诉scatter
要在要显示绘图的轴上应用的函数;为此,您可以使用轴类:
import matplotlib.pyplot as plt
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))
for ax, col in zip(axes[0], cols):
ax.set_title(col)
for ax, row in zip(axes[:,0], rows):
ax.set_ylabel(row, size='large')
axes[0,0].scatter([1],[7]) #sample data
fig.tight_layout()
plt.show()
推荐阅读
- ruby - has_many 在关联用户和项目时通过关联错误
- javascript - 输入范围和计算
- spring-boot - 如何使用 gradle 在 spring-boot 中生成 JPA 元模型?(+ lombok)
- php - symfony monolog 根据通道将日志写入不同的文件
- android - 以编程方式使用命令将应用程序包制作为设备所有者
- node.js - 获取 npm 错误!ENOTDIR:安装依赖于另一个的包时不是目录
- node.js - 在我的情况下,错误处理的方式是什么?
- docker - How to combine Dockerfiles in gitlab ci?
- php - Cron 作业不执行 php 文件
- android - 使用我的 textview 链接到网站并结束 URL