Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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 如何使用枢轴和不同长度的矢量绘制双y轴?_R_Ggplot2 - Fatal编程技术网

R 如何使用枢轴和不同长度的矢量绘制双y轴?

R 如何使用枢轴和不同长度的矢量绘制双y轴?,r,ggplot2,R,Ggplot2,我试图在ggplot中使用pivot\u longer绘制一个图形,但我正在努力找出如何添加第二个y轴并绘制另一个系列。我的一些数据具有不同的长度,这就是为什么我要使用更长的pivot\u,但我不知道如何将其与双y轴相适应 我一直得到的错误如下:“错误:美学长度必须为1或与数据(48):y相同” 有没有办法解决这个问题?当我注释掉geom_线(aes(y=na))+ 第一个ggplot语句使用adjtotdat作为数据帧。当您添加geom_line并声明y值时,它会尝试将其与当前x对齐,即长度为

我试图在ggplot中使用
pivot\u longer
绘制一个图形,但我正在努力找出如何添加第二个y轴并绘制另一个系列。我的一些数据具有不同的长度,这就是为什么我要使用更长的
pivot\u
,但我不知道如何将其与双y轴相适应

我一直得到的错误如下:“
错误:美学长度必须为1或与数据(48):y相同”

有没有办法解决这个问题?当我注释掉
geom_线(aes(y=na))+


第一个
ggplot
语句使用
adjtotdat
作为数据帧。当您添加
geom_line
并声明
y
值时,它会尝试将其与当前
x
对齐,即长度为48的
acc
。您必须使
na
成为一个数据帧,并将其添加到
aes
geom_行
之外,或者使其长度为48。我没有检查您的其他代码,但这就是错误的来源。什么是
xstar
?谢谢您的回复。但是
acc
16的长度(在NA分配之后)不是吗?当我使用
length(acc)
时,我得到16,当我使用
length(adjtoddat)
时,我得到5,这就是为什么我有点困惑,我应该扩展到什么,关于@Tung的问题。这是一个参数,我忘了在reprex@NateRiver:您可能希望重新缩放轴。参见这些示例&您的第一个
ggplot
语句使用
adjtotdat
作为数据帧。当您添加
geom_line
并声明
y
值时,它会尝试将其与当前
x
对齐,即长度为48的
acc
。您必须使
na
成为一个数据帧,并将其添加到
aes
geom_行
之外,或者使其长度为48。我没有检查您的其他代码,但这就是错误的来源。什么是
xstar
?谢谢您的回复。但是
acc
16的长度(在NA分配之后)不是吗?当我使用
length(acc)
时,我得到16,当我使用
length(adjtoddat)
时,我得到5,这就是为什么我有点困惑,我应该扩展到什么,关于@Tung的问题。这是一个参数,我忘了在reprex@NateRiver:您可能希望重新缩放轴。看看这些例子&
xstar = 0.85
x1 = c(0.87827, 0.91340, 0.92754, 0.92065, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.85643)      
x2 =  c(0.68152, 0.78534, 0.82775, 0.82965, 0.85643, 0.85643, 0.85643, 0.85643, 0.85643, 0.85643, 0.85643, 0.85643, 0.85643, 0.85643, 0.85643)
x3 =  c(0.67141, 0.77874, 0.82259, 0.82487, 0.77612, 0.77612, 0.77612, 0.77612, 0.77612, 0.77612, 0.77612, 0.77612, 0.77612, 0.77612, 0.85643)    
a = c(0.30000, 0.67141, 0.77874, 0.77874, 0.82965, 0.82965, 0.82965, 0.82965, 0.82965, 0.82965, 0.82965, 0.82965, 0.82965, 0.82965, 0.82965, 0.82965)
b = c(0.95000, 0.95000, 0.95000, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.92754, 0.85643, 0.85643)
na = c(0, 28,  6, 57, 32, 24, 13, 92, 37, 32, 58, 17, 11, 40,  1)

acc = seq(from = 1, to = (length(a)), by = 1)

na[(length(a))] = NA
x1[(length(a))] = NA
x2[(length(a))] = NA
x3[(length(a))] = NA

totdat = tibble(acc,x1,x2,x3,b,a)
totdat
adjtotdat = pivot_longer(totdat, c(x1,x2,x3))
adjtotdat

pnas = ggplot(adjtotdat, aes(x = acc, y = value, color = name))
pnas + geom_ribbon(aes(ymin=a,ymax=b),fill= "#CCCCCC", color= "#FFFFFF", alpha=0.5)+
  geom_line(aes(y=na))+  
  geom_ribbon(aes(ymin=0,ymax=a),fill= "#333333", color= "#FFFFFF", alpha=0.5)+  
  geom_ribbon(aes(ymin=b,ymax=1),fill= "#333333", color= "#FFFFFF", alpha=0.5)+ geom_line(size=1) + geom_point(size=2) +
  geom_line(aes(y = a), color = "#336600", size = 1) + geom_point(aes(y = a), color = "#336600", size = 2)+
  geom_line(aes(y = b), color = "#006633", size= 1) +
  geom_point(aes(y = b), color = "#006633", size = 2)+
  annotate(geom = "text",x = 1+0.45, y= (min(c(a))-0.02), label = 'bold("Lower Threshold")', size = 3.5, parse = TRUE) +
  annotate(geom = "text",x = 1+0.45, y= (max(c(b)-0.02)), label = 'bold("Upper Threshold")', size= 3, parse = TRUE) +
  scale_y_continuous(breaks=seq(0,1,0.1),sec.axis = sec_axis(trans=~.*((70)), name="Number of Periods between Accidents")) +
  scale_x_continuous(breaks=seq(1,(length(a)),1)) +
  geom_hline(aes(yintercept = xstar, linetype ="Ex Ante Court Eff. Effort"), col = "green", size = 1.2)+
  scale_linetype_manual(name = "", values = c(2), guide=guide_legend(override.aes = list(color=c("green")))) +
  scale_colour_manual(values = c("blue","red","purple","#006633","#336600"), 
                      limits = c("x1","x2","x3","b","a"), name="", 
                      labels = c("Driver 1", "Driver 2", "Driver 3", "Upper Legal Threshold","Lower Legal Threshold"))