我试图在同一张图上绘制具有不同yaxis的两条线,但是yaxis的缩放比例不足以显示完整的数据集。
我尝试使用axis.autoscale(),axis.set_ylim(),axis.axis()...,但是即使明确指定了边界,它们也无法正确设置yaxis。
from matplotlib import pyplot as plt
def plot_result(acc, val_acc, loss, val_loss=None):
fig, (ax1) = plt.subplots(1)
ax1.plot(acc, 'g')
ax1.autoscale(axis='y')
ax2 = ax1.twinx()
ax2.plot(loss, 'r')
if val_loss is not None: ax2.plot(val_loss, 'r--')
ax2.autoscale(axis='y')
fig.tight_layout()
plot_result(acc, val_acc, loss)
我希望这两行都可以覆盖整个30个纪元。
不幸的是,当我在顶部写fig, (ax1,ax2) = plt.subplots(1,2)
时,它可以正确绘制(但右边有空子图)。
答案 0 :(得分:-1)
import numpy as np
from matplotlib import pyplot as plt
acc, val_acc, loss, val_loss=np.random.rand(20),np.random.rand(20),np.random.rand(20),np.random.rand(0)
def plot_result(acc, val_acc, loss, val_loss):
fig=plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plt.plot(acc)
plt.plot(val_acc)
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper left')
plt.subplot(1,2,2)
plt.plot(loss)
plt.plot(val_loss)
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper left')
plt.show()
plot_result(acc, val_acc, loss, val_loss)