Как удалить стебель (и) из участка ствола matplotlib? - PullRequest
0 голосов
/ 10 марта 2020

Вот пример сценария для создания ствольного графика в matplotlib.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt
import numpy as np

# returns 10 evenly spaced samples from 0.1 to 2*PI
x = np.linspace(0.1, 2 * np.pi, 10)

fig, ax = plt.subplots( figsize=(4.,3.), constrained_layout=True)
markerline, stemline, baseline = ax.stem(x, np.cos(x), '-.', use_line_collection=True)
markerline1, stemline1, baseline1 = ax.stem(x, np.cos(x*5), '-', use_line_collection=True)

plt.setp(baseline, color='black', linewidth=2)
plt.setp(baseline1, color='black', linewidth=2)
plt.setp( stemline, color="green" )
plt.setp( stemline1, color="red" )

plt.show()

Q1. После создания этих графиков я хотел бы удалить, например, markerline1, stemline1, baseline1. Как мне их удалить?

Q2. Если я хотел бы удалить весь стволовой участок из ax, не затрагивая другие настройки ax, как мне это сделать? Я обнаружил, что ax.clear() удаляет все из ax.

Согласно matplotlib,

UserWarning: В Matplotlib 3.3 отдельные линии на стебельном графике будут добавлены как LineCollection вместо отдельных линий.

Кроме того, LineCollection , кажется, имеет атрибут с именем segment, который содержит информацию x, y для всех линий ствола.

Q3. Как получить объект LineCollection из ax или fig? Я исследую, является ли изменение объекта LineCollection способом для ответа на мой первый вопрос.

1 Ответ

0 голосов
/ 10 марта 2020

Вы можете использовать obj.remove() для удаления объектов из графика после того, как они были построены, т.е. markerline1.remove(), et c.

Подробнее здесь

Это может быть расширено до Q2 путем зацикливания всех объектов на вашем графике, если вы назвали их ранее.

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