как настроить ось Y в Facet_grid в R - PullRequest
0 голосов
/ 31 марта 2019

Я сделал фасетные графики, используя facet_grid. Это выглядит так, как я хочу, за исключением того, что ось у выглядит замятой на графике, данные представлены в процентах и ​​идут от (3% -95%). Есть ли способ сделать его лучше?

enter image description here

plot <- ggplot(data=mydata, mapping=aes(x=year, y=value)) +
  geom_bar(stat="identity", aes(color=coralType))

Я пытался использовать:

plot + facet_grid(coralType ~ location, scales="free")

и

plot + facet_grid(coralType ~ location, scales="free_x") 
plot + facet_grid(coralType ~ location, scales="free_y")

Я тоже пытался ylim=c(3, 100) ylim=range(3:100)

ничего из этого не сработало.

Вот мои данные:

structure(list(location = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("site01", "site02", 
"site03", "site04", "site05", "site06", "site07", "site08"), class = "factor"), 
    coralType = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L), .Label = c("blue corals", "hard corals", 
    "sea fans", "sea pens", "soft corals"), class = "factor"), 
    longitude = c(143.515, 143.515, 143.515, 143.515, 143.515, 
    143.515, 143.515, 143.515, 143.515, 143.515, 143.515, 143.515, 
    143.515, 143.515, 143.515), latitude = c(-11.843, -11.843, 
    -11.843, -11.843, -11.843, -11.843, -11.843, -11.843, -11.843, 
    -11.843, -11.843, -11.843, -11.843, -11.843, -11.843), year = c(2010L, 
    2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2011L, 2012L, 
    2013L, 2014L, 2015L, 2016L, 2017L), value = c(30, 30, 41, 
    43, 50, 54, 57, 58, 10, 11, 30, 31, 31, 32, 34)), row.names = c(NA, 
15L), class = "data.frame")

1 Ответ

2 голосов
/ 31 марта 2019

С данными, предоставленными ФП, график, полученный с помощью

ggplot(mydata) + 
  aes(x = year, y = value, fill = coralType) +
  geom_col() + 
  facet_grid(coralType ~ location)

enter image description here

выглядит хорошо, потому что value является числовым.

Обратите внимание, что эстетика fill используется вместо эстетики colour.Кроме того, geom_col() используется в качестве ярлыка для geom_bar(stat = "identity").


. Я могу воспроизвести проблему при отображении value в виде символа (который превращается в коэффициент с помощью ggplot2):

max_value <- 60
ggplot(mydata) + 
  aes(x = year, y = sprintf("%.2f %%", 100 * value / max_value),
      fill = coralType) +
  geom_col() + 
  facet_grid(coralType ~ location)

enter image description here

Это не похоже на суматоху, как на скриншоте OP из-за ограниченного количества точек данных.


ЕслиOP хочет показывать проценты по оси Y вместо абсолютных значений, scale_y_continuous(labels = scales::percent) может использоваться с числовыми значениями:

max_value <- 60
ggplot(mydata) + 
  aes(x = year, y = value / max_value, fill = coralType) +
  geom_col() + 
  facet_grid(coralType ~ location) + 
  scale_y_continuous(labels = scales::percent)

enter image description here

Данные

mydata <-
structure(list(location = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("site01", "site02", 
"site03", "site04", "site05", "site06", "site07", "site08"), class = "factor"), 
    coralType = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L), .Label = c("blue corals", "hard corals", 
    "sea fans", "sea pens", "soft corals"), class = "factor"), 
    longitude = c(143.515, 143.515, 143.515, 143.515, 143.515, 
    143.515, 143.515, 143.515, 143.515, 143.515, 143.515, 143.515, 
    143.515, 143.515, 143.515), latitude = c(-11.843, -11.843, 
    -11.843, -11.843, -11.843, -11.843, -11.843, -11.843, -11.843, 
    -11.843, -11.843, -11.843, -11.843, -11.843, -11.843), year = c(2010L, 
    2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2011L, 2012L, 
    2013L, 2014L, 2015L, 2016L, 2017L), value = c(30, 30, 41, 
    43, 50, 54, 57, 58, 10, 11, 30, 31, 31, 32, 34)), row.names = c(NA, 
15L), class = "data.frame")
...