使用pylab需要:
import matplotlib.pylab as plt
或者直接:
import pylab as plt
样例1:
plt.figure(figsize=(12, 5.5)) # 宽800 长600
plt.subplot(121) # 一行两列,这是第一个图
plt.plot(epochs, acc, 'r', label='Training acc')
plt.plot(epochs, val_acc, 'b', label='Validation acc')
plt.title('Training and validation accuracy')
plt.legend()
# plt.figure() # plt.figure()是新建一个画布。如果有多个图依次可视化的时候,需要使用,否则所有的图都显示在同一个画布中了。
plt.subplot(122)
plt.plot(epochs, loss, 'r', label='Training loss')
plt.plot(epochs, val_loss, 'b', label='Validation loss')
plt.title('Training and validation loss')
plt.legend()
plt.savefig('data3/Kuaizi_Classification1_loss={0:.2f}_accur={1:.2f}_epoch={2}.jpg'.format(val_loss[-1], val_acc[-1], epochs[-1]))
# 不在plt.show前保存图片就会使保存的图片空白。':.2f'保留两位小数
plt.show()
样例2:
from keras.datasets import mnist
from keras.utils import to_categorical
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype('float32') / 255
plt.subplot(121) # 一行两列,这是第一个图
plt.imshow(test_images[0].squeeze() * 255) # squeeze 去掉多余的维度,比如这里是[28,28,1]变为[28,28]
plt.subplot(122) # 一行两列,这是第二个图
plt.imshow(test_images[1].squeeze() * 255)
plt.show()
画sin x、tan x、ln x、e^x
def graph_math_function():
fig = plt.figure() # 新建画布
ax = axisartist.Subplot(fig, 111) # 使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax) # 将绘图区对象添加到画布中
ax.axis[:].set_visible(False)
ax.axis["x"] = ax.new_floating_axis(0, 0, axis_direction="bottom") # 增加坐标轴
ax.axis["y"] = ax.new_floating_axis(1, 0, axis_direction="bottom")
ax.annotate(s='x', xy=(2 * np.pi, 0), xytext=(2 * np.pi, 0.1)) # 增加箭头
ax.annotate(s='y', xy=(0, 1.0), xytext=(-0.5, 1.0))
x = np.arange(-np.pi, np.pi, 0.001)
x1, x2 = [], []
for i in x:
if(i < -1.7):
x1.append(i)
if(i > 1.7):
x2.append(i)
# 这里必须将中间以零为中心的附近的点去掉,不然会为了显示这个函数而压缩其它函数,变得很难看。
# 并且分成两个区间是为了不让<0的y和>0的y连线
print(x1)
# plt.title("y=sin x, y=tan x, y=x")
# plt.plot(x, np.sin(x), x1, np.tan(x1), x2, np.tan(x2), x, x)
# plt.title("y=ln(1+x), y=x")
# plt.plot(x, np.log(1+x), x, x)
plt.title("y=e^x-1, y=x")
plt.plot(x, np.exp(x)-1, x, x)
plt.show()
# 多个函数画入一图,参考:https://www.cnblogs.com/jmlovepython/p/5673088.html
# 增加直角坐标系、箭头参考: https://blog.csdn.net/zengbowengood/article/details/102862072