我正在努力用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
注意:这个图可以由条形图,线条,体积,几个不同的图等组成......(我真的很感激尝试一些不同的解决方案)
答案 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)
答案 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'))