在Matplotlib刷新油漆

时间:2016-11-07 00:03:29

标签: python matplotlib

我有这段代码:

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。如有任何建议,我将不胜感激。

1 个答案:

答案 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()