首页 > 解决方案 > jupyter notebook matplotlib 显示绘图,然后在原图上绘图

问题描述

我想绘制一个带有两个轴的白色图,将其显示给用户,然后在带有两个轴的白色图中添加一条线,将其显示给用户,然后在该线上添加一些点,然后将其显示给用户。如果不一次又一次地复制代码,我怎么能做到这一点?

我现在正在做的是第一个代码块

import math
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

fig = plt.figure(figsize=(5,5))
ax = plt.axes()

ax.set_xlabel('cat')
ax.set_ylabel('dog')

plt.title("Set of 2 animals")

plt.show()

然后在第二个代码块中

fig = plt.figure(figsize=(5,5))
ax = plt.axes()

x = np.linspace(0, 1.0, 1000)
ax.plot(x, 1.0-x,zorder = 0)

ax.set_xlabel('cat')
ax.set_ylabel('dog')

plt.title("Set of 2 animals")
plt.show()

然后在第三个代码块中

fig = plt.figure(figsize=(5,5))
ax = plt.axes()

x = np.linspace(0, 1.0, 1000)
ax.plot(x, 1.0-x,zorder = 0)

ax.set_xlabel('cat')
ax.set_ylabel('dog')

plt.title("Set of 2 animals")
p0 = 0.5
p1 = 0.5
color = "blue"
textd =0.05
ax.scatter([p0],[p1], color = color,zorder=1)
ax.text(p0+textd, p1+textd, 'tiger',color = color,zorder =2)
plt.show()

我正在寻找的是第一个代码块中的内容

import math
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

fig = plt.figure(figsize=(5,5))
ax = plt.axes()

ax.set_xlabel('cat')
ax.set_ylabel('dog')

plt.title("Set of 2 animals")

plt.show()

然后在第二个代码块中

add line directly without duplicating the code for making axes
plt.show()

然后在第三个代码块中

add point directly without duplicating the code for making axes and lines
plt.show()

标签: matplotlibjupyter-notebook

解决方案


更新:我实际上想出了答案。

def plot(step):
  fig = plt.figure(figsize=(5,5))
  ax = plt.axes()
  ax.set_xlabel('cat')
  ax.set_ylabel('dog')
  plt.title("Set of 2 animals")
  if step>=1:
    x = np.linspace(0, 1.0, 1000)
    ax.plot(x, 1.0-x,zorder = 0)
  if step>=2:
    p0 = 0.5
    p1 = 0.5
    color = "blue"
    textd =0.05
    ax.scatter([p0],[p1], color = color,zorder=1)
    ax.text(p0+textd, p1+textd, 'tiger',color = color,zorder =2)
  plot.show()

应该可以解决问题。


推荐阅读