1

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

这是一个数据表

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-axis : 每个类别被找到的次数

colour/shape :根据向量“reclassification”重新分类的“hello”列。在我的示例中应该有 3 种颜色。一个用于 0 < hello < 4 的“类别”计数,一个用于 4 < hello < 7,一个用于 7 < hello < 15

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

4

2 回答 2

4
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)

在此处输入图像描述

于 2013-06-16T16:50:39.533 回答
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'))

在此处输入图像描述

于 2013-06-16T17:04:08.357 回答