Стереть ранее нарисованный контент из рисунка Pyplot - PullRequest
3 голосов
/ 25 августа 2011

Используя pyplot, я создал фигуру и нанес на график количество случайно разбросанных (x, y) точек.Затем я хочу связать некоторое подмножество этих точек с отрезками.После того, как пользователь нажал клавишу, моей программе необходимо стереть ранее нарисованный набор сегментов линии (оставив исходные точки на месте), а затем нарисовать новые сегменты между другим набором точек.

Моя проблема в том, что яне знаю, как стереть предыдущие отрезки.Я попытался переназначить их в цвет фона (который белый), но это оставляет остаток небелых пикселей, где была линия.Я не могу найти никаких примеров в онлайн-документации, которая делает это.Возможно ли это, и если да, то как?

Ответы [ 2 ]

3 голосов
/ 26 августа 2011

У Сципи есть учебник для удаления линии из осей. Я использую это в следующем примере, который, я думаю, подражает тому, что вы пытаетесь сделать:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
np.random.seed(101)
y = np.random.rand(10)

small = [i for i in range(len(x)) if y[i] < .5 ]
big = [i for i in range(len(x)) if y[i] > .5 ]

fig = plt.figure()
ax = fig.add_subplot(111)

ax.scatter(x,y)
# user wants to plot lines connecting big values (>.5)
ax.plot(x[big],y[big])

#plt.show()
# now user wants to delete the first (and only) line
del ax.lines[0]

# so that they can plot a line only showing small values
ax.plot(x[small],y[small])

plt.show()
0 голосов
/ 26 августа 2011

К сожалению, вам нужно очистить сюжет и перерисовать ваши очки. Команда: clf().

Я только что понял, что я не прав. Посмотрите на концепцию artists, она позволяет вам определять определенные нарисованные объекты как статические, а другие как динамические. Я использовал его для анимации, но это должно быть применимо и здесь. Вот учебник .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...