Как вы комбинируете две фигуры линейного графика Seaborn, сохраняя диапазон значений y? - PullRequest
0 голосов
/ 25 октября 2018

Я хочу объединить две фигуры с различными диапазонами, как фигура

Figure One

Эта фигура была синтезирована путем рисования двух фигур.Тем не менее, я хотел бы использовать библиотеку Seaborn сразу.но теперь это выглядит как

Figure Two.

Как я могу комбинировать различные цифры диапазона y, используя seaborn или любую другую библиотеку графиков python?

Я добавляю свой код pythonтоже

import seaborn as sns
import numpy as np
with sns.axes_style('white'):
     ax = sns.lineplot(x='unit_step', y='accuracy', hue='data_type', style='data_type', markers=True, dashes=True, data=data)
     ax.set_xticks(np.arange(1,6))

1 Ответ

0 голосов
/ 25 октября 2018

Поскольку я понимаю ваш вопрос как запрос о том, как отобразить два набора данных очень разных диапазонов в один подзаговор, здесь есть небольшой намек на то, как этого можно достичь.

tl; dr: вend, вам просто нужно поставить plt.twinx() перед командой plt.plot () -, которая должна иметь вторичную ось Y.

Сначала предположим две функции, которые имеют оченьразличные диапазоны значений в одном и том же диапазоне определения, f(x) = x³ и f(x) = sin(x):

x = np.linspace(-2*np.pi, 2*np.pi, 100)
y1 = x**3
y2 = np.sin(x)

Это может быть построено так:

fig, axs= plt.subplots(1, 2, figsize=(12, 6))

axs[0].plot(x, y1, 'b', x, y2, 'r')
axs[0].set_xlabel('X')
axs[0].set_ylabel('Y')

axs[1].plot(x, y1, 'b')
axs[1].set_xlabel('X')
axs[1].set_ylabel('Y1')

axs_sec = axs[1].twinx()        # <--- create secondary y-axis
axs_sec.plot(x, y2, 'r')
axs_sec.set_ylabel('Y2')

enter image description here

С левой стороны вы можете видеть, что синус почти невидим, если наносить на одну и ту же ось Y.С правой стороны синус нанесен на вторичную ось y, так что он получает свое собственное масштабирование.

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