pycharm中使用matplotlib画图

代码是这样:

plt.plot(x_data, y_data, 'b.')
plt.plot(x_data, k[-1] * x_data + b[-1], 'r')
plt.show()

plt.plot(epochs, losses, 'k')
plt.title('loss_change')
plt.xlabel('times')
plt.ylabel('loss')
plt.show()

到了展示图片的时候没有依次将两个图片展出,而是重叠到一起了:
​​

img

这个问题应该怎么解决呀?

【以下回答由 GPT 生成】

问题的原因是在使用Matplotlib绘制图像时,两张图片都是使用plt.show()函数展示的,所以在执行完第一段代码后,第一张图片展示出来后,第二段代码又立即执行展示了第二张图片,导致两张图片重叠在一起了。

解决方案如下:

  • 方案一:分别使用两个不同的画布展示图片。

代码如下:

import matplotlib.pyplot as plt

# 绘制第一张图片
plt.plot(x_data, y_data, 'b.')
plt.plot(x_data, k[-1] * x_data + b[-1], 'r.')
plt.show()

# 绘制第二张图片
plt.figure()  # 创建一个新的画布
plt.plot(epochs, losses, 'k')
plt.title('loss_change')
plt.xlabel('times')
plt.ylabel('loss')
plt.show()
  • 方案二:在同一个画布上绘制两张图片,并调整坐标轴的位置,使得两张图片不重叠。

代码如下:

import matplotlib.pyplot as plt

# 绘制第一张图片
plt.subplot(2, 1, 1)  # 创建一个2行1列的子图,并选择第一个子图来绘制
plt.plot(x_data, y_data, 'b.')
plt.plot(x_data, k[-1] * x_data + b[-1], 'r.')

# 绘制第二张图片
plt.subplot(2, 1, 2)  # 选择第二个子图来绘制
plt.plot(epochs, losses, 'k')
plt.title('loss_change')
plt.xlabel('times')
plt.ylabel('loss')

plt.tight_layout()  # 调整子图的布局,使得图片不重叠
plt.show()

以上两种方案,你可以根据自己的需要选择其中一种来解决问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

可以用subplot 可参考:https://blog.csdn.net/chumingqian/article/details/126063755