2016-04-14 9 views
0

Я генерирую полярную диаграмму в R с помощью графика. Угол - это запись звука, и длина берется из метки времени записи. Даты обрабатываются с lubridate parse_date_timeR Сегменты полярного графа с зазорами

polar.plot(
    as.numeric(df$datetime), 
    df$heading, 
    rp.type="p", 
    start=90, 
    clockwise=TRUE, 
    show.grid.labels=FALSE 
) 

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

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

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

Спасибо за любую помощь.

ответ

0

Цифры ... еще несколько минут, и у меня в основном есть решение.

Во-первых, я получаю приличную полярную диаграмму с ggplot2. Я не уверен, как раньше этого не нашел.

ggplot2 polar plot arrows:

ggplot(df, aes(heading, datetime)) + coord_polar() + geom_path() 

И я думаю, что я должен быть в состоянии получить пробелы, вставив значения «NA» или генерации групп. Line break when no data in ggplot2:

idx <- c(1, diff(df$datetime)) 
i2 <- c(1,which(idx != 1), nrow(df)+1) 
df$grp <- rep(1:length(diff(i2)), diff(i2)) 
ggplot(df, aes(heading, datetime)) + coord_polar() + geom_path(group=grp) 

Я не знаю, как я не нашел черчения полярная с ggplot2.

Несмотря на то, что ggplot2 не выбирает кратчайший путь для соединения точек (он перемещается по всему графику, чтобы соединить 10 до 350, а не пересекать 0).

Edit: И это может быть решена с помощью coord_map() ggplot2: How to link correctly track points around polar projection map?

Edit 2: Nevermind, coord_map не предназначена для этого