Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用柱向无填充的打印添加形状_R_Ggplot2 - Fatal编程技术网

R 使用柱向无填充的打印添加形状

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

嗨,我有这个图,我想使用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")
    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。要绘制可见的最小矩形(即大约一个像素)#不可绘制任何内容