Какой график визуализации я должен использовать? - PullRequest
2 голосов
/ 28 февраля 2020

У меня есть данные, как показано ниже, и я хочу создать сюжет как добавленную картинку. Я хочу визуализировать эти данные как образец графика. Я искал библиотеки seaborn и matplotlib, но не могу найти то, что мне нужно.

Также на примере графика точка пересечения равна 0. Но мне нужно изменить эту точку. Например, точка пересечения составляет 30 для стоимости и 25 для обслуживания.

Может ли кто-нибудь помочь мне с этой проблемой?

enter image description here

enter image description here

Ответы [ 2 ]

4 голосов
/ 28 февраля 2020

Вот простая реализация с использованием matplotlib:

cost=[50,40,30,20,10]
service=[60,30,25,10,20]
fig, (ax) = plt.subplots()

ax.spines['left'].set_position(('data', 25))
ax.spines['bottom'].set_position(('data', 30))
# Eliminate upper and right axes
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

ax.scatter(cost,service)

Вывод для приведенного выше фрагмента кода

Вы также можете обратиться к: Как нарисовать ось в середине рисунка?

1 голос
/ 01 марта 2020

На мой комментарий, если это то, что вы хотите, вам нужна Seaborn JointGrid для такого рода вещей. В приведенном ниже примере я просто использовал гистограмму distplot для маргиналов, но см. Документацию для различных типов примеров.

import seaborn as sns
cost=[50,40,30,20,10,50,50,50,50,50]
service=[60,30,25,10,20,60,30,25,10,20]

grid = sns.JointGrid(cost, service, space=0, height=6, ratio=20)
grid.plot_joint(sns.scatterplot, color="g")
grid.plot_marginals(sns.distplot, kde=False, color="r", bins=10)

grid.fig.axes[0].spines['left'].set_position(('data', 25))
grid.fig.axes[0].spines['bottom'].set_position(('data', 30))
grid.fig.axes[1].spines['bottom'].set_visible(False)
grid.fig.axes[2].spines['left'].set_visible(False)

plt.show(grid)

Вот что происходит с этим (я удвоил ваши данные сделать гистограмму немного интереснее). Когда вы создаете JointGrid, он создает объект JointGrid. Не фига или топоры. Объект JointPlot имеет рис, а этот рис имеет три оси. Оси [0] - это ось для основного графика, оси 1 - это ось для верхнего краевого графика, а оси [2] - это ось для правого маргинального графика. При манипулировании шипами для этих осей, имейте в виду, что оси ориентированы с изображением. То есть левый позвоночник по осям [2] - это позвоночник, который был бы нижним позвоночником, если бы этот график был обычным горизонтальным графиком.

...