在 ggplot2 中仅显示几个区间级别的文本
showing the text of only a few interval levels in 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)))
ggplot(aes(x = c2.intervals, fill = c1), data=c) + geom_histogram(stat="count")
这显示了 x 轴上所有间隔的文本。我想在绘制所有 bin 时显示某些级别的文本,比如 (30,50]
和 (70,120]
。换句话说,有没有一种简单的方法可以在ggplot2中隐藏c2.intervals
某些级别的文本?
你是说像这样?
变体 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 个显示一次)
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)))
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 轴上所有间隔的文本。我想在绘制所有 bin 时显示某些级别的文本,比如 (30,50]
和 (70,120]
。换句话说,有没有一种简单的方法可以在ggplot2中隐藏c2.intervals
某些级别的文本?
变体 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 个显示一次)
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)))