ggplot,分类变量出现次数的计数,并根据连续变量分割该计数

时间:2013-06-16 13:50:11

标签: r ggplot2

我正在努力用ggplot来实现某些目标,但我一直都在失败!...

这是data.table

set.seed(12) 
data=data.table(categories=c('c','a','b','a','a','c','b','b','a','c','c','b'),hello=runif(12,0,15)
reclassification = c(0,4,7,15)

我正在尝试做以下情节:

y轴:3个类别(a,b,c)

x轴:找到每个类别的次数

颜色/形状:“hello”列根据矢量“重新分类”重新分类。在我的例子中应该有3种颜色。一个用于0的“类别”计数<你好< 4,一个4<你好< 7,一个7<你好< 15

注意:这个图可以由条形图,线条,体积,几个不同的图等组成......(我真的很感激尝试一些不同的解决方案)

2 个答案:

答案 0 :(得分:2)

library(data.table)
set.seed(12) 

DT <- data.table(categories=c('c','a','b','a','a','c','b','b','a','c','c','b'),hello=runif(12,0,15))
reclassification <- c(0,4,7,15)
DT[,colour:=cut(hello,c(-Inf,reclassification,Inf))]

library(ggplot2)
p <- ggplot(DT,aes(x=categories,fill=colour)) + geom_bar()
print(p)

enter image description here

答案 1 :(得分:2)

我认为你在这个图中有一些冗余信息,因为你的x轴给出了每个类别中点的频率,但是你仍需要绘制所有点以显示hello的重分类值。 。但话说回来,我不确定我是否完全理解你想要如何应用这些颜色。

你可以沿着这些方向做点什么:

library(data.table)
library(ggplot2)

set.seed(12)
# I've increased the number of categories here to provide a fuller example.
data <- data.table(categories=sample(letters[1:10], 50, replace=T), 
                   hello=runif(50, 0, 15)) 
reclassification = c(0, 4, 7, 15)

p <- ggplot(data, 
            aes(table(categories)[match(categories, names(table(categories)))], 
                categories, 
                col = cut(hello, reclassification)))

p + geom_jitter(position = position_jitter(width = 0.15, height=0.15),
                shape=20, size=4) + 
  labs(list(x='Frequency', y='Category', col='Class')) +
  scale_colour_manual(values = c('#404040', '#CA0020', '#2B83BA'))

enter image description here