使用r中的“比例\线型\手册”错误显示名称

使用r中的“比例\线型\手册”错误显示名称,r,ggplot2,scale-color-manual,R,Ggplot2,Scale Color Manual,假设我的数据如下 structure(list(Date_spill = structure(c(14821, 14821, 14821, 14822, 14822, 14822, 14823, 14823, 14823, 14824, 14824, 14824, 14825, 14825, 14825, 14826, 14826, 14826, 14827, 14827, 14827, 14828, 14828, 14828, 14829, 14829, 14829, 14830, 14

假设我的数据如下

structure(list(Date_spill = structure(c(14821, 14821, 14821, 
14822, 14822, 14822, 14823, 14823, 14823, 14824, 14824, 14824, 
14825, 14825, 14825, 14826, 14826, 14826, 14827, 14827, 14827, 
14828, 14828, 14828, 14829, 14829, 14829, 14830, 14830, 14830
), class = "Date"), name = c("Total_Var.V2", "Total_Cov.V2", 
"Total_Semi.V2", "Total_Var.V2", "Total_Cov.V2", "Total_Semi.V2", 
"Total_Var.V2", "Total_Cov.V2", "Total_Semi.V2", "Total_Var.V2", 
"Total_Cov.V2", "Total_Semi.V2", "Total_Var.V2", "Total_Cov.V2", 
"Total_Semi.V2", "Total_Var.V2", "Total_Cov.V2", "Total_Semi.V2", 
"Total_Var.V2", "Total_Cov.V2", "Total_Semi.V2", "Total_Var.V2", 
"Total_Cov.V2", "Total_Semi.V2", "Total_Var.V2", "Total_Cov.V2", 
"Total_Semi.V2", "Total_Var.V2", "Total_Cov.V2", "Total_Semi.V2"
), value = c(49.4546983682789, 51.9303086440996, 92.629674668831, 
49.4548705378623, 51.9568197311001, 92.6639221895955, 49.4050580381077, 
52.0759311138546, 92.6960916166521, 49.4105943879168, 52.0780444332815, 
92.7383532168068, 49.4138062869719, 52.1659343814577, 92.7264996022303, 
49.9540234458416, 52.7289455840081, 92.8136667785365, 49.9103140374395, 
52.8808260158253, 92.805208075033, 49.655075046784, 51.7281324622375, 
92.7607146196158, 49.6062909588621, 51.8989768324288, 92.7160066233307, 
49.3349721254447, 51.6577369988633, 92.6983797038236)), row.names = c(NA, 
-30L), class = c("tbl_df", "tbl", "data.frame"))
我有一个有3条线的绘图,我使用
scale\u linetype\u manual
scale\u color\u manual
定义这些线的颜色和类型。问题是,当我使用这两个命令时,行的名称与正确的模型不对应

我使用的代码如下所示:

library(tidyverse)
ggplot(Total, aes(x = Date_spill, y=value, colour = name, linetype = name)) +
  geom_line() + 
  theme_test() +
  scale_color_manual(values = c("darkseagreen3", "skyblue3", "firebrick3"), 
                     labels = c("MHAR-ReVar",
                                "MHAR-ReCov", 
                                "MSHAR")) +
  scale_linetype_manual(values = 1:3, 
                        labels = c("MHAR-ReVar",
                                   "MHAR-ReCov", 
                                   "MSHAR")) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), 
        legend.position = "bottom",
        legend.title = element_blank())+
  labs(x = "", y="")
结果如下,问题是图例与数据不一致。我想说,红色虚线代表MHAR ReVar的数据,实线代表MHAR ReCov的数据 试试这个:

库(ggplot2)
ggplot(总计,aes(x=日期,y=值,颜色=名称,线型=名称))+
几何线()
主题测试()+
比例-颜色-手册(分段=c(“总变量V2”、“总变量V2”、“总半变量V2”),
值=c(“firebrick3”、“深绿色3”、“天空蓝3”),
标签=c(“MHAR ReVar”,
“MHAR ReCov”,
“MSHAR”))+
刻度线类型手册(断开=c(“总变量V2”、“总变量V2”、“总半变量V2”),
值=c(2,1,3),
标签=c(“MHAR ReVar”,
“MHAR ReCov”,
“MSHAR”))+
主题(axis.text.x=元素\文本(角度=45,hjust=1),
legend.position=“底部”,
legend.title=元素_blank())+
实验室(x=”,y=)


由(v1.0.0)

在调用
scale\u color\u manual
时创建于2021-04-06,您可能需要添加一个
breaks=…
参数,以匹配建议的
标签和
值所使用的实际中断值的顺序。。。问题是ggplot默认情况下按字母顺序排列变量
name
,然后分配所提供的颜色、标签、linotypes。。。按照这个顺序,也就是说,
Total_Cov.V2
在字母表中排在第一位,因此被分配了第一个标签
“MHAR ReVar”
@stefan伟大的观察!我更改了原始数据中的名称,得到了预期的结果