Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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
为什么我的ggplot2图例在这个R程序中重叠?_R_Ggplot2 - Fatal编程技术网

为什么我的ggplot2图例在这个R程序中重叠?

为什么我的ggplot2图例在这个R程序中重叠?,r,ggplot2,R,Ggplot2,我的数据是: x y z a b c d e 1 1 0 0 7 0 7 0 0 2 2 0 0 7 7 14 7 0 3 3 0 0 7 14 21 14 0 4 4 0 0 7 21 28 21 0 5 5 0 0 7 28 35 28 0 6 6 0 0 7 35 42 35 0 7 7 0 0 7 42

我的数据是:

    x   y  z  a   b   c  d    e
1   1   0  0  7   0   7  0    0
2   2   0  0  7   7  14  7    0
3   3   0  0  7  14  21 14    0
4   4   0  0  7  21  28 21    0
5   5   0  0  7  28  35 28    0
6   6   0  0  7  35  42 35    0
7   7   0  0  7  42  49 42    0
8   8   0  0  7  49  56 49    0
9   9   0  0  7  56  63 56    0
10 10   0  0  7  63  70 63    0
11 11   0  0  7  70  77 70    0
12 12   0  0  7  77  84 77    0
13 13   0  0  7  84  91 84    0
14 14   0  0  7  91  98 91    0
15 15   0  0  7  98 105 98    0
我的代码是:

ggplot(data=df, aes(x))+
  geom_step(aes(y=d))+
  geom_point(aes(y=e, color="Blue"),shape=1, size=4)+
  geom_step(aes(y=e))+
  geom_point(aes(y=d,color="Red"),size=2)+
  theme(axis.text.x = element_text( vjust = 0.5),
        legend.position = "bottom",
        axis.line = element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        panel.border = element_blank())+
  scale_x_continuous("Patient number", labels = x, breaks = x)+
  ylab("time")+
  scale_color_identity(name="Time", breaks = c("Blue", "Red"),
                       labels = c("Wait time", "Idle time"),
                       guide = "legend")

我正在使用上面的代码,我的图例是重叠的。如何更正它?

试试这种方法,使用重塑的数据比逐个添加几何图形要好,因为修改图元可能会很麻烦。代码如下:

library(ggplot2)
library(dplyr)
library(tidyr)
#Code
df %>% select(c(x,d,e)) %>% pivot_longer(-x) %>%
  ggplot(aes(x=x,y=value, color=name,shape=name,group=name,fill=name))+
  geom_step(color='black',show.legend = F)+
  geom_point()+
  theme(axis.text.x = element_text( vjust = 0.5),
        legend.position = "bottom",
        axis.line = element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        panel.border = element_blank())+
  ylab("time")+
  scale_color_manual('Time',values=c('red','blue'),
                     labels = c("Wait time", "Idle time"))+
  scale_shape_manual('Time',values=c(21,21),
                     labels = c("Wait time", "Idle time"))+
  scale_fill_manual('Time',values=c('transparent','blue'),
                     labels = c("Wait time", "Idle time"))
输出:

使用的一些数据:

#Data
df <- structure(list(x = 1:15, y = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L), z = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), a = c(7L, 7L, 7L, 7L, 7L, 7L, 
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L), b = c(0L, 7L, 14L, 21L, 
28L, 35L, 42L, 49L, 56L, 63L, 70L, 77L, 84L, 91L, 98L), c = c(7L, 
14L, 21L, 28L, 35L, 42L, 49L, 56L, 63L, 70L, 77L, 84L, 91L, 98L, 
105L), d = c(0L, 7L, 14L, 21L, 28L, 35L, 42L, 49L, 56L, 63L, 
70L, 77L, 84L, 91L, 98L), e = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15"))
#数据

df你所说的重叠是什么意思?尝试
dput(df)
并粘贴输出我可以删除我的问题吗?我想重新发布它,因为我的数据显示不好。@Khalar您的数据显示出来了@Khalar你想在你的传奇中只使用圆圈而不填充,对吗?谢谢你的帮助。嗨,@Duck我试过你的代码,但我在情节中看到红色和蓝色圆圈在情节中互换。我得到的不是d的红色圆圈,而是与我的传说相矛盾的蓝色实心圆圈。你能帮帮我吗?提前感谢。@Khalar尝试在缩放选项中使用标签
labels=c(“等待时间”、“空闲时间”)
将顺序更改为
labels=c(“空闲时间”、“等待时间”)
可能您的数据不同!是的,它起作用了。但是标签应该按照颜色的顺序排列。我试着用同样的数据。为什么不这样做?@Khalar你也应该按照标签上的颜色顺序玩游戏!