Ridgeline / Joyplot через диапазон движения - PullRequest
0 голосов
/ 08 октября 2018

(Использование Python 3.0) С шагом 0,25 я хочу рассчитать и построить PDF-файлы для заданных данных в указанных диапазонах для упрощения визуализации.

Расчет отдельного графика был сделан благодаря сообществу SO,но я не могу понять, как правильно выполнять итерацию алгоритма по всему диапазону значений.

Данные: https://www.dropbox.com/s/y78pynq9onyw9iu/Data.csv?dl=0

Пока у меня есть нормализованные данные игрушек, которые выглядят как выстрел из дробовикаодна из целевых областей, изолированных между черными линиями с шагом 0,25:

import csv
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
from matplotlib import pyplot as plt
import seaborn as sns
Data=pd.read_csv("Data.csv")

g = sns.jointplot(x="x", y="y", data=Data)

bottom_lim = 0
top_lim = 0.25
temp = Data.loc[(Data.y>=bottom_lim)&(Data.y<top_lim)]
g.ax_joint.axhline(top_lim, c='k', lw=2)
g.ax_joint.axhline(bottom_lim, c='k', lw=2)

# we have to create a secondary y-axis to the joint-plot, otherwise the kde 
might be very small compared to the scale of the original y-axis
ax_joint_2 = g.ax_joint.twinx()
sns.kdeplot(temp.x, shade=True, color='red', ax=ax_joint_2, legend=False)
ax_joint_2.spines['right'].set_visible(False)
ax_joint_2.spines['top'].set_visible(False)
ax_joint_2.yaxis.set_visible(False)

enter image description here

И теперь я хочу сделатьridgeline / joyplot этих данных в каждой полосе 0,25 данных.

Я попробовал несколько методов из различных примеров Seaborn, но на самом деле ничто не учитывает диапазон или диапазон значений в качестве оси Y.В результате я пытаюсь перевести мой написанный алгоритм в рабочий код.

1 Ответ

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

Я не знаю, если это именно то, что вы ищете, но, надеюсь, это поможет вам в этом.Я также очень мало знаю о Python, поэтому вот немного R:

library(tidyverse)
library(ggridges)
data = read_csv("https://www.dropbox.com/s/y78pynq9onyw9iu/Data.csv?dl=1")

data2 = data %>%
  mutate(breaks = cut(x, breaks = seq(-1,7,.5), labels = FALSE))

data2 %>%
  ggplot(aes(x=x,y=breaks)) +
  geom_density_ridges() +
  facet_grid(~breaks, scales = "free")

data2 %>%
  ggplot(aes(x=x,y=y)) +
  geom_point() +
  geom_density() +
  facet_grid(~breaks, scales = "free")

И, пожалуйста, прости плохо отформатированную ось.

image

...