Matplotlib空白图(应该有子图)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib空白图(应该有子图)相关的知识,希望对你有一定的参考价值。
我正在尝试使用Matplotlib在for循环中调用的函数内生成绘图轴,并使用这些轴创建最终的多面板图形。但是,尽管在我的功能中创建轴时显示正确的线,但多面板图最终会出现空轴。我究竟做错了什么?我的代码如下。
import numpy as np
import matplotlib.pyplot as plt
def create_axis(alpha, beta):
fig, ax = plt.subplots(figsize=(5, 4))
x = np.arange(10, dtype=float)
y = alpha + x * beta
ax.plot(x, y)
return ax
def create_plot():
alpha = 3.
axes_pool = []
for i in range(4):
axes_pool.append(create_axis(alpha, i))
fig, axes = plt.subplots(1, 4)
for i in range(len(axes)):
axes[i] = axes_pool[i]
plt.show()
if __name__ == '__main__':
create_plot()
答案
您正在将轴传递给子函数以允许已创建的子图上的plt。
正确的方法是将轴作为create_axis
函数的参数之一发送,它将在所提供的轴上绘制所需的数据。
import numpy as np
import matplotlib.pyplot as plt
def create_axis(ax,alpha, beta):
x = np.arange(10, dtype=float)
y = alpha + x * beta
ax.plot(x, y)
def create_plot():
alpha = 3.
fig, axes = plt.subplots(1, 4,figsize=(5,4)))
for i,ax in enumerate(axes):
create_axis(ax,alpha,i)
if __name__ == '__main__':
create_plot()
plt.show()
输出:
以上是关于Matplotlib空白图(应该有子图)的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2多子图(facet grid)绘制注释实战:无子图注释有子图注释自定义每个子图注释的位置多网面子图注释