сохранить график Python как переменную и перезагрузить его, чтобы наложить другой график - PullRequest
0 голосов
/ 11 ноября 2018

В Mathematica вы можете хранить графики в переменных, а затем наложить их на некоторое время позже.Например,

plt1 = Plot[Cos[x],{x,0,Pi}];
plt2 = Plot[Sin[x],{x,0,Pi}];
plt3 = Plot[x,{x,0,Pi}];

Show[plt1,plt2]
Show[plt1,plt3]

дает два графика, один перекрывает графики cos (x) и sin (x), а другой перекрывает графики cos (x) и x.Поэтому мне не нужно повторно указывать cos (x) для второго наложения, поскольку оно уже сохранено в plt1.

Мне интересно, что то же самое может произойти и в python.У меня есть 2D-функция, которая требует много времени для построения графика, и мне нужно заново ее отобразить и каждый раз накладывать ее на некоторые другие данные.Могу ли я построить его только один раз, а затем наложить его на графики других данных?

1 Ответ

0 голосов
/ 11 ноября 2018

Я объясню вопрос как задать вопрос о matplotlib (так как он помечен этим), но, конечно, есть и другие инструменты построения графиков на python, которые могут вести себя по-другому.

В matplotlib художник (например, линия) обязательно является частью одной фигуры. Вы не можете добавить одного и того же художника к нескольким фигурам.
Таким образом, обычное решение состоит в том, чтобы не желать дублировать самого художника, а скорее создать художника.

def mycos(x, ax=None, **kwargs):
    ax = ax or plt.gca()
    ax.plot(x, np.cos(x), **kwargs)

def mysin(x, ax=None, **kwargs):
    ax = ax or plt.gca()
    ax.plot(x, np.sin(x), **kwargs)

x = np.linspace(0,2*np.pi)

# Create one figure with two subplots, plot one function in each subplot
fig, axes = plt.subplots(2)
mycos(x, ax=axes[0])
mysin(x, ax=axes[1])

# Create another figure with one subplot, plot both functions
fig, ax = plt.subplots(1)
mycos(x, ax=ax)
mysin(x, ax=ax)
...