R 使用柱向无填充的打印添加形状
嗨,我有这个图,我想使用dat数据框的“形状”列来确定点的形状。应使用shape=16填写2个点,使用shape=1填写其余点,但似乎不起作用。有什么想法吗R 使用柱向无填充的打印添加形状,r,ggplot2,R,Ggplot2,嗨,我有这个图,我想使用dat数据框的“形状”列来确定点的形状。应使用shape=16填写2个点,使用shape=1填写其余点,但似乎不起作用。有什么想法吗 time = as.POSIXct(c("2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03","2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03"), tz = "GMT")
time = as.POSIXct(c("2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03","2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03"), tz = "GMT")
group = c("A","A","A","B","B","B")
value =c(NA, 99, 100, NA, 101, 100)
size =c(NA, 3, 10, NA, 5, 4)
dat =data.frame(time= time, group =group, value =value ,size =size, shape= c(1,16,16,1,1,1) )
dat
ggplot(dat, aes(x=time, y = value, group = group )) +geom_line() +
geom_point(aes (color = as.factor(group), size = size ), shape=shape) +
scale_x_datetime(date_labels = "%H:%M:%S", breaks= date_breaks("5 min")) # + scale_fill_manual(values=c(NA,NA)) doesnt work
您的
形状
不符合美学要求。此外,要使用“形状”参数,必须将其转换为一个因子
以下是产生您期望的代码:
time = as.POSIXct(c("2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03","2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03"), tz = "GMT")
group = c("A","A","A","B","B","B")
value =c(NA, 99, 100, NA, 101, 100)
size =c(NA, 3, 10, NA, 5, 4)
dat =data.frame(time= time, group =group, value =value ,size =size, shape= factor(c(1,16,16,1,1,1)) )
dat
ggplot(dat, aes(x=time, y = value, group = group )) +geom_line() +
geom_point(aes (color = as.factor(group), size = size , shape=shape))
你不需要传递一个因子来塑造。您需要使用scale\u shape\u identity来告诉它使用作为实际形状传递的值 大量借用Eric的答案:
time = as.POSIXct(c("2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03","2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03"), tz = "GMT")
group = c("A","A","A","B","B","B")
value =c(NA, 99, 100, NA, 101, 100)
size =c(NA, 3, 10, NA, 5, 4)
dat =data.frame(time= time, group =group, value =value ,size =size, shape= c(1L,16L,16L,1L,1L,1L) )
dat
library(ggplot2)
ggplot(dat, aes(x=time, y = value, group = group )) +geom_line() +
geom_point(aes (color = as.factor(group), size = size , shape=shape)) +
scale_shape_identity()
生成空心蓝色圆圈和实心红色三角形的。我正在寻找实心和空心的所有圆。我认为1和16都是圆,但是形状是错误的,你不需要传递一个因子来塑造。您需要使用scale\u shape\u identity来告诉它使用作为实际形状传递的值。有关形状的帮助说明:
#形状有四种类型的值:一个[0,25]中的整数,#一个单独的字符--它使用该字符作为绘图符号,#a。要绘制可见的最小矩形(即大约一个像素)#不可绘制任何内容