показывая текст только нескольких интервальных уровней в ggplot2 - PullRequest
0 голосов
/ 01 мая 2019
c1 <- c("p2","p3","p1","p2","p1","p3","p4","p4","p4","p1","p1","p2","p2","p3","p4","p2","p1","p4","p3","p3")
c2 <- c(41,146,79,107,131,127,32,88,119,148,32,65,36,23,44,76,100,98,121,104)
df <- data.frame(c1=c1, c2=c2)
c <- mutate(df, c2.intervals = cut(c2, breaks = c(0, 30, 50, 70,120,150)))
ggplot(aes(x = c2.intervals, fill = c1), data=c) + geom_histogram(stat="count")

Показывает текст для всех интервалов по оси x.Я хотел бы показать текст некоторых уровней, скажем (30,50] и (70,120], при построении всех корзин.Другими словами, есть ли простой способ скрыть текст некоторых уровней c2.intervals в ggplot2?

1 Ответ

1 голос
/ 01 мая 2019
Вы имеете в виду, как это?

Вариант 1 (ручной)

1

ggplot(aes(x = c2.intervals, fill = c1), data = c) + 
    geom_histogram(stat = "count") +
    scale_x_discrete(labels = c("", "(30,50]", "", "(70,120))", ""))

Вариант 2 (показывать каждый n-й)

1

xlabels <- levels(c$c2.intervals)
xlabels[seq(1, length(xlabels), 2)] <- ""

ggplot(aes(x = c2.intervals, fill = c1), data = c) + 
    geom_histogram(stat = "count") +
    scale_x_discrete(labels = xlabels)

Данные

library(dplyr)
library(ggplot2)

c1 <- c("p2","p3","p1","p2","p1","p3","p4","p4","p4","p1","p1","p2","p2","p3","p4","p2","p1","p4","p3","p3")
c2 <- c(41,146,79,107,131,127,32,88,119,148,32,65,36,23,44,76,100,98,121,104)
df <- data.frame(c1 = c1, c2 = c2)
c <- mutate(df, c2.intervals = cut(c2, breaks = c(0, 30, 50, 70, 120, 150)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...