R ggplot图例未按预期显示

R ggplot图例未按预期显示,r,ggplot2,R,Ggplot2,我在定义这个传说时遇到了问题。这是我正在使用的代码。除了这个论坛之外,我还查阅了各种ggplot2教程和文档,寻找解决问题的线索,但都没有找到。请告诉我我做错了什么 structure(list(xdata = c(-5, -5.30102999566398, -5.60205999132796, -5.90308998699194, -6.20411998265593, -6.50514997831991), A = c(97.15, 98.44, 96.47, 73.69, 60.97,

我在定义这个传说时遇到了问题。这是我正在使用的代码。除了这个论坛之外,我还查阅了各种ggplot2教程和文档,寻找解决问题的线索,但都没有找到。请告诉我我做错了什么

structure(list(xdata = c(-5, -5.30102999566398, -5.60205999132796, 
-5.90308998699194, -6.20411998265593, -6.50514997831991), A = c(97.15, 
98.44, 96.47, 73.69, 60.97, 45.13), B = c(116.11, 124.08, 110.08, 
111.81, 118.25, 78.09), C = c(108.4, 127.6, 96.47, 124.87, 136.49, 
104.69), D = c(107.27, 118.25, 99.05, 99.49, 104.02, 99.58), 
    necafT = c(109.45, 104.98, 101.66, 101.2, 108.4, 101.57)), .Names = c("xdata", 
"A", "B", "C", "D", "necafT"), row.names = c(NA, 6L), class = "data.frame")

ec50_1 = as.numeric(Globals$EC50[1]) ;    conc1 = as.numeric(Globals$conc1[1])
antag1 = 1+(conc1/(10**(-1*Globals$pa2[1])))**1 ;  logEC1 = log10(ec50_1*antag1)
TOP1 = as.numeric(Globals$Top[1]);  BOTTOM1 = as.numeric(Globals$Bottom[1]);  hillSlope = 1
fit1 <- nls(A ~ BOTTOM + (TOP-BOTTOM)/(1+10**((logEC-xdata)*hillSlope)), data= COMPD1,
           start=list(TOP = TOP1, BOTTOM = BOTTOM1, hillSlope = 1, logEC = logEC1))
pred1 <- fitted(fit1)
fit2 <- nls(B ~ BOTTOM + (TOP-BOTTOM)/(1+10**((logEC-xdata)*hillSlope)), data= COMPD1,
            start=list(TOP = TOP1, BOTTOM = BOTTOM1, hillSlope = 1, logEC = logEC1))
pred2 <- fitted(fit2)
fit3 <- nls(C ~ BOTTOM + (TOP-BOTTOM)/(1+10**((logEC-xdata)*hillSlope)), data= COMPD1,
            start=list(TOP = TOP1, BOTTOM = BOTTOM1, hillSlope = 1, logEC = logEC1))
pred3 <- fitted(fit3)
fit4 <- nls(D ~ BOTTOM + (TOP-BOTTOM)/(1+10**((logEC-xdata)*hillSlope)), data= COMPD1,
            start=list(TOP = TOP1, BOTTOM = BOTTOM1, hillSlope = 1, logEC = logEC1))
pred4 <- fitted(fit4)
fit5 <- nls(necafT ~ BOTTOM + (TOP-BOTTOM)/(1+10**((logEC-xdata)*hillSlope)), data= COMPD1,
            start=list(TOP = TOP1, BOTTOM = BOTTOM1, hillSlope = 1, logEC = logEC1))
pred5 <- fitted(fit5)

ggplot(COMPD1, aes(y = A,x = xdata, fill = "A",colour="A"))+geom_point(shape = 21, size = 4,colour="black")+ 
geom_line(aes(y = pred1,x =  xdata),size = 1.5,colour="blue1")+
  geom_point(aes(y = B,x =  xdata, fill = "B",colour="black"),shape = 22,size = 4,colour="black")+
  geom_line(aes(y = pred2,x =  xdata),size = 1.5,colour="red")+
  geom_point(aes(y = C,x =  xdata, fill = "C"),shape = 23,size = 4,colour="black")+
  geom_line(aes(y = pred3,x =  xdata),size = 1.5,colour="green")+
  geom_point(aes(y = D,x =  xdata, fill = "D"),shape = 24, size = 4,colour="black")+
  geom_line(aes(y = pred4,x =  xdata),size = 1.5,colour="black")+
  geom_point(aes(y = necafT,x =  xdata, fill = "necafT"),shape = 25,size = 4,colour="black")+
  geom_line(aes(y = pred5,x =  xdata),size = 1.5,colour="orchid")+
  xlab('Log Concn')+ ylab('LogEC50')+ggtitle("Global Fit")+ theme_classic()+
  theme(legend.title = element_text(colour="blue", size=10, face="bold"),
    legend.position="bottom",panel.background = element_rect(colour = "black", size=1),
    plot.margin = margin(1, 2, 1, 1, "cm"),
    plot.title = element_text(hjust = 0),
    axis.title = element_text(face="bold", color="#966666", size=14),
    axis.text.x = element_text(face="bold", color="#666666", size=12),
    axis.text.y = element_text(face="bold", color="#666666", size=12))
结构(扩展数据=c(-5,-5.30102999566398,-5.60205999132796, -5.90308998699194,-6.20411998265593,-6.50514997831991),A=c(97.15, 98.44,96.47,73.69,60.97,45.13,B=c(116.11,124.08,110.08,, 111.81118.2578.09),C=C(108.4127.6,96.47124.87136.49, D=c(107.27、118.25、99.05、99.49、104.02、99.58), necafT=c(109.45104.98101.66101.2108.4101.57)),name=c(“扩展数据”, “A”、“B”、“C”、“D”、“necafT”,row.names=C(NA,6L),class=“data.frame”) ec50_1=数值形式(全局$ec50[1]);conc1=as.numeric(全局$conc1[1]) antig1=1+(conc1/(10**(-1*Globals$pa2[1]))**1;logEC1=log10(ec50_1*1) TOP1=作为数字(全局$Top[1]);BOTTOM1=as.numeric(全局$Bottom[1]);山坡=1
fit1您应该将数据合并到一个数据框中。例如:

df_pred <- data.frame(cbind(xdata=COMPD1$xdata, A=pred1, B=pred2, C=pred3, D=pred4, necafT=pred5))
df_pred <- tidyr::gather(df_pred, -xdata,key="var", value="ydata")
df_real <- tidyr::gather(COMPD1,-xdata,key="var", value="ydata")
df <- merge(df_pred, df_real, by=c("var", "xdata"), suffixes=c("_pred", "_real"))

ggplot(df) + geom_point(aes(y=ydata_real, x=xdata,color=var, shape=var)) + 
   theme(legend.title = element_text(colour="blue", size=10, face="bold"),
    legend.position="bottom",panel.background = element_rect(colour = "black", size=1),
    plot.title = element_text(hjust = 0),
    axis.title = element_text(face="bold", color="#966666", size=14),
    axis.text.x = element_text(face="bold", color="#666666", size=12),
    axis.text.y = element_text(face="bold", color="#666666", size=12)) +
    geom_line(aes(y=ydata_pred,x=xdata,color=var))

df_pred我们应该读懂你的想法吗?怎么了?你说你读了文档和很多教程,但我可以向你保证,没有一个像样的教程或文档会提倡一层一层地添加相同的几何图形,并手动设置美学效果,作为创建图例的好方法。所有这些资源都将展示地图美学的例子,以产生一个好的传奇。谢谢你,并感谢你的评论!我还在学习。太好了!谢谢。另外,我可以要求您如何将A、B等更改为图例中表示各种浓度的数值吗?最简单的方法是更改数据框中的标签。