Редактировать цвета линий в объекте Axis matplotlib - PullRequest
1 голос
/ 23 мая 2019

Я создал график с 7 кривыми и сохранил его как объект Matplotlib Axis.Однако теперь я хочу изменить цвета в каждой из этих кривых.Поскольку для создания кривых требуется некоторое время, возможно ли изменить цвета этих кривых в самом объекте Axis?

import matplotlib.pyplot as plt
import pickle
import numpy as np

fig, ax = plt.subplots()

x = np.arange(10)
y1 = np.random.random(10)
y2 = np.random.random(10)


kwargs_1 = {
    'color': 'red',
    'linestyle': ':',
    'label': '1',
}

kwargs_2 = {
    'color': 'blue',
    'linestyle': '--',
    'label': '2',
}

ax.plot(x, y1, **kwargs_1)
ax.plot(x, y2, **kwargs_2)

pickle.dump(ax, open('axis_obj.pkl', 'wb'))

plt.clf()
plt.close()

ax_read = pickle.load(open('axis_obj.pkl', 'rb'))

fig = plt.figure()
ax_read.figure = fig
fig.axes.append(ax_read)
fig.add_axes(ax_read)

# and now I'm stuck on how to access the plot kwargs used earlier for this ax_read object

1 Ответ

1 голос
/ 23 мая 2019

Вы можете изменить цвета, используя этот код:

# change the color of the plot lines:
ax.properties()['children'][0].set_color('green')
ax.properties()['children'][1].set_color('black')

Объяснение: Объект axes имеет атрибут properties, который содержит дочерние элементы объекта axes. children - список, содержащий все объекты, которые были нарисованы на оси:

>>> ax.properties()['children']
    [
 <matplotlib.lines.Line2D at 0x7f2edb896b70>,
 <matplotlib.lines.Line2D at 0x7f2edb896ac8>,
 ...]

Первые два элемента - это графики, которые вы нарисовали на оси.

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