R 使用ggplot2,如何创建柱状图或条形图,其中最后一条是大于某个数字的所有值的计数?

R 使用ggplot2,如何创建柱状图或条形图,其中最后一条是大于某个数字的所有值的计数?,r,ggplot2,histogram,geom-bar,R,Ggplot2,Histogram,Geom Bar,我想绘制数据的柱状图以显示其分布,但我有一些异常值,与大多数值相比,它们都非常高,都小于1.00。我不希望在最左边有一个或两个条形图,然后在图的最右边才有任何条形图,我希望有一个包含除异常值以外的所有内容的柱状图,然后在底部标签“>100%”处添加一个条形图。我可以用ggplot2使用geom_bar()实现这一点,如下所示: X <- c(rnorm(1000, mean = 0.5, sd = 0.2), rnorm(10, mean = 10, sd = 0.5)) Da

我想绘制数据的柱状图以显示其分布,但我有一些异常值,与大多数值相比,它们都非常高,都小于1.00。我不希望在最左边有一个或两个条形图,然后在图的最右边才有任何条形图,我希望有一个包含除异常值以外的所有内容的柱状图,然后在底部标签“>100%”处添加一个条形图。我可以用ggplot2使用geom_bar()实现这一点,如下所示:

 X <- c(rnorm(1000, mean = 0.5, sd = 0.2), 
   rnorm(10, mean = 10, sd = 0.5))
 Data <- data.frame(table(cut(X, breaks=c(seq(0,1, by=0.05), max(X)))))

 library(ggplot2)
 ggplot(Data, aes(x = Var1, y = Freq)) + geom_bar(stat = "identity") +
  scale_x_discrete(labels = paste0(c(seq(5,100, by = 5), ">100"), "%"))

X我将尝试回答B

我不知道是否有一个参数可以让您执行B),但您可以手动定义一个函数来执行该操作。即:

library(ggplot2)
X <- c(rnorm(1000, mean = 0.5, sd = 0.2), 
       rnorm(10, mean = 10, sd = 0.5))
Data <- data.frame(table(cut(X, breaks=c(seq(0,1, by=0.05), max(X)))))

#the function will remove one label every n labels
remove_elem <- function(x,n) {
  for (i in (1:length(x))) {
    if (i %% n == 0) {x[i]<-''}
  }  
  return(x)  
}

#make inital labels outside ggplot (same way as before). 
labels <-paste0(c(seq(5,100, by = 5),'>100'),'%')
产出:


我不知道这是否是你正在寻找的,但它确实做到了

这有点像黑客,但没关系!它确实有效,所以谢谢你!添加
+coord\u flip()
ggplot(Data, aes(x = Var1, y = Freq)) + geom_bar(stat = "identity") +
  scale_x_discrete(labels = remove_elem(labels,2))