我需要画多个线图,其中有一些分组。我的数据如下:
roc_mj_cmb_t1= c(0.8115,0.8060,0.8114,0.8340,0.8789,0.8743,0.8807,0.8838,
0.7946,0.7904,0.8245,0.8198,0.8721,0.8686,0.8876,0.8763,
0.8204,0.8146,0.7982,0.8350, 0.7977,0.8021,0.8137,0.8176
)
roc_mj_lab= c(rep("Y1_uni_cmb_test1",4),rep("Y1_Joint_test1",4),
rep("Y1_uni_cmb_test2",4),rep("Y1_Joint_test2",4),
rep("Y1_uni_both_test1",4), rep("Y1_uni_both_test2",4))
settin=c("setting 1","setting 2","setting 3","setting 4","setting 1","setting 2","setting 3","setting 4"
,"setting 1","setting 2","setting 3","setting 4","setting 1","setting 2","setting 3","setting 4"
,"setting 1","setting 2","setting 3","setting 4","setting 1","setting 2","setting 3","setting 4")
data_mj=data.frame(settin,roc_mj_cmb_t1,roc_mj_lab)
然后我使用以下代码获得了线图:
ggplot(data=data_mj,
aes(y=roc_mj_cmb_t1,x=settin, group=roc_mj_lab))+
geom_line(
aes(color=roc_mj_lab,linetype=roc_mj_lab))
+scale_color_manual(values = c("blue", "red", "blue", "red","blue", "red")
)+ylim(0.75,0.9) +scale_linetype_manual(values=c("longdash", "solid","longdash", "solid",
"dotted","dotted"))
以下是我的输出:
在这个图中,我需要从相同颜色的“Y1_XXX_test1”和相同颜色的“Y1_XXX_test2”开始绘制线条。“Y1_XXX_test1”中的3个图需要使用线型进行区分。类似的事情也需要应用于“Y1_XXX_test2”。
但是基于这段代码,我得到了与我指定的不同的颜色。(例如:(黄色、绿色和粉色的线条)这可能是什么原因呢?
3条答案
按热度按时间ajsxfq5m1#
您的一个“+"的位置错误。此行中的+:“+scale_color_manual..”需要在前一行的末尾,当我像下面这样清理的时候,我得到了你的蓝线和红线。
ulydmbyx2#
这个技巧并不是硬编码每种颜色/线型,它将
roc_mj_lab
分成不同的“类型”组,并根据它们设置线型/颜色。(一个副作用是它将图例分成两个。)诀窍在于,当你想让某些东西共享一种颜色时,数据中需要有一个变量,该变量的值与这些东西的值相同。如果我们查看上面数据的第一个
transform
变量,你会看到我创建的变量:lc8prwob3#
你想要这个吗?只要把它变成正确的形式: