Масштабирование осей X и Y полигонов ggplot и изменение цвета групп - PullRequest
0 голосов
/ 17 февраля 2019

-Как я могу масштабировать оси Y и X до 0,30 и 0,50 соответственно и построить точку данных в соответствии со шкалой?

-Как изменить цвет групп 1, 2 и 3 - фиолетовый, оранжевый и желтый?

 library(ggplot2)
 library(plotly)

ID <- c("Group 1", "Group 1", "Group 1", "Group 2", "Group 2", "Group 2", "Group 3", "Group 3", "Group 3", "Group 4", "Group 4", "Group 4")
area <- c("Area 1", "Area 1", "Area 1","Area 2", "Area 2", "Area 2", "Area 3", "Area 3", "Area 3", "Area 4", "Area 4", "Area 4")
x <- c(1.0, 10.25, 50.0, 2.0, 5.0, 30.0, 5.0, 9.0, 10.0, 11.0, 23.0, 40.0) 
y <- c(1.0, 3.0, 5.0, 20.0, 10.0, 23.0, 25.0, 19.1, 5.0, 15.0, 8.0, 4.0)

df <- cbind(ID, area, x, y)
df <- as.data.frame(df)
df

p <- ggplot(df, aes(x=x, y=y)) + geom_polygon(aes(fill=factor(ID), group=area))

p <- ggplotly(p)
p

enter image description here

Я пытался поиграться с scale_x_continuous, scale_fill_manual и scale_fill_identity, но этокажется, ничего не делает.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Из приведенных выше комментариев я мог бы решить это следующим образом.

library(ggplot2)
library(plotly)

ID <- c("Group 1", "Group 1", "Group 1", "Group 2", "Group 2", "Group 2", "Group 3", "Group 3", "Group 3", "Group 1", "Group 1", "Group 1")
area <- c("Area 1", "Area 1", "Area 1","Area 2", "Area 2", "Area 2", "Area 3", "Area 3", "Area 3", "Area 4", "Area 4", "Area 4")
colours <- c("Purple", "Purple", "Purple", "Green", "Green", "Green", "yellow", "yellow", "yellow", "Purple", "Purple", "Purple")
x <- c(1.0, 10.25, 50.0, 2.0, 5.0, 30.0, 5.0, 9.0, 10.0, 11.0, 23.0, 40.0) 
y <- c(1.0, 3.0, 5.0, 20.0, 10.0, 23.0, 25.0, 19.1, 5.0, 15.0, 8.0, 4.0)

df <- data.frame(ID, area, colours, x, y, stringsAsFactors = FALSE )

###Get colours
colours_poly <- setNames(df$colours, df$ID)
colours_poly

p <- ggplot(df, aes(x=x, y=y)) + geom_polygon(aes(fill=factor(ID), group=area)) + 
     scale_x_continuous(limits = c(0,50)) + 
 scale_y_continuous(limits = c(0,30)) +
 scale_fill_manual(values = colours_poly)


p <- ggplotly(p)
p

Спасибо большое!enter image description here

0 голосов
/ 17 февраля 2019

Сначала преобразуйте столбцы x и y в число (они являются факторами в данных).Затем установите пределы шкалы, используя scale_x_continuous и scale_y_continuous.Наконец, используйте scale_fill_manual, чтобы изменить цвета (поскольку у вас есть четвертая группа, я дал ей другой цвет).

library(tidyverse)
df <- df %>% mutate(x = parse_number(x),
                        y = parse_number(y))

p <- ggplot(df, aes(x=x, y=y)) + geom_polygon(aes(fill=factor(ID), group=area)) + 
    scale_x_continuous(limits = c(0,50)) + 
    scale_y_continuous(limits = c(0,30)) + 
    scale_fill_manual(values = c("purple", "orange", "yellow", "gray40"))
ggplotly(p)
...