我有这段代码:
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
fig = plt.figure(figsize=(12, 6))
ax = fig.add_subplot(111)
z = plt.scatter([3,5], [1.11212,1.11215])
axcolor = '#ffffff'
ax_x_pos = plt.axes([0.086, 0.198, 0.828, 0.022], axisbg=axcolor)
x_pos = Slider(ax_x_pos, '', 0, 100, valfmt='%d',
valinit=100, color='green')
x_pos.valtext.set_visible(False)
def updateX(val):
global z
z.remove()
plt.scatter([3,5], [1.11212,1.11215])
fig.canvas.draw_idle()
cid = x_pos.on_changed(updateX)
plt.show()
删除“Z”param后如何绘制任何内容? (我得到了空白的画布(在“on_changed()”之后)。)
我的意思是。 我需要画一些油漆,然后用另一种油漆替换它。P.S。如有任何建议,我将不胜感激。
答案 0 :(得分:0)
您定义了一个轴ax
,因此应绘制该图(ax.scatter
而不是plt.scatter
)。此外,在更新中,您不使用滑块值val
来更改您绘制的值。
更改绘图和重绘的示例如下,
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
fig = plt.figure(figsize=(12, 6))
ax = fig.add_subplot(111)
plt.subplots_adjust(bottom=0.25)
z = ax.scatter([3,5], [1.11212,1.11215])
axcolor = '#ffffff'
ax_x_pos = plt.axes([0.086, 0.1, 0.828, 0.022], axisbg=axcolor)
x_pos = Slider(ax_x_pos, '', 0, 100, valfmt='%d',
valinit=100, color='green')
x_pos.valtext.set_visible(False)
def updateX(val):
global z
z.remove()
z = ax.scatter([3*val/100.,5], [1.11212,1.11215*val/100.])
fig.canvas.draw_idle()
cid = x_pos.on_changed(updateX)
plt.show()