注意:在撰写本文时,我不知道如何插入图像,我将在发布后继续进行处理,但是如果您运行下面的代码,则应该能够看到我所用的图形在谈论...。抱歉!
本质上,我有这两个图,并且希望它们位于同一图上(彼此重叠),但是我需要它们使用不同的配色方案,否则我将无法将它们区分开容易。
我在这个站点上到处都有,尽管有很多类似的问题,但是没有一个问题能以我需要的方式工作。我在下面链接的最接近的链接,只是知道我已阅读它们,但它们并不能解决我的问题:
Distinct color palettes for two different groups in ggplot2
R ggplot two color palette on the same plot
第一个图形使用此数据(缩短到50行,实际上达到约1000行),RuleCount反复重复1-14,TrainingPass上升到大约60
RuleCount TrainingPass m4Accuracy
1 1 -1 0.000000000
2 2 -1 0.000000000
3 3 -1 0.004225352
4 4 -1 0.014225352
5 5 -1 0.022816901
6 6 -1 0.182957746
7 7 -1 0.194507042
8 8 -1 0.207183099
9 9 -1 0.239859155
10 10 -1 0.362394366
11 11 -1 0.430704225
12 12 -1 0.567887324
13 13 -1 0.582535211
14 14 -1 0.602676056
15 1 0 0.000000000
16 2 0 0.000281690
17 3 0 0.006901408
18 4 0 0.018732394
19 5 0 0.031267606
20 6 0 0.202676056
21 7 0 0.215633803
22 8 0 0.231830986
23 9 0 0.262253521
24 10 0 0.373661972
25 11 0 0.440281690
26 12 0 0.573802817
27 13 0 0.588169014
28 14 0 0.608873239
29 1 1 0.000985915
30 2 1 0.014788732
31 3 1 0.032957746
32 4 1 0.071408451
33 5 1 0.113943662
34 6 1 0.276760563
35 7 1 0.290281690
36 8 1 0.303943662
37 9 1 0.335633803
38 10 1 0.438028169
39 11 1 0.501971831
40 12 1 0.625070423
41 13 1 0.637323944
42 14 1 0.658169014
43 1 2 0.000985915
44 2 2 0.015915493
45 3 2 0.030704225
46 4 2 0.076619718
47 5 2 0.119436620
48 6 2 0.280563380
49 7 2 0.294507042
50 8 2 0.308732394
我使用以下代码对其进行了绘制:
ggplot(df_m4, aes(x=RuleCount, y=m4Accuracy, group = TrainingPass, color = TrainingPass)) +
geom_line()+
scale_color_gradient(low = "green", high = "blue")
此图的结果:
第二张图本质上是相同的数据和代码,除了不是在图上得到一堆稍微变化的线之外,每一行最终都是同一条线
数据:
RuleCount TrainingPass Accuracy
1 1 -1 0.000422535
2 2 -1 0.000422535
3 3 -1 0.002676056
4 4 -1 0.005915493
5 5 -1 0.007746479
6 6 -1 0.053239437
7 7 -1 0.059718310
8 8 -1 0.068309859
9 9 -1 0.099859155
10 10 -1 0.197042254
11 11 -1 0.256197183
12 12 -1 0.421971831
13 13 -1 0.440422535
14 14 -1 0.468028169
15 1 0 0.000422535
16 2 0 0.000422535
17 3 0 0.002676056
18 4 0 0.005915493
19 5 0 0.007746479
20 6 0 0.053239437
21 7 0 0.059718310
22 8 0 0.068309859
23 9 0 0.099859155
24 10 0 0.197042254
25 11 0 0.256197183
26 12 0 0.421971831
27 13 0 0.440422535
28 14 0 0.468028169
29 1 1 0.000422535
30 2 1 0.000422535
31 3 1 0.002676056
32 4 1 0.005915493
33 5 1 0.007746479
34 6 1 0.053239437
35 7 1 0.059718310
36 8 1 0.068309859
37 9 1 0.099859155
38 10 1 0.197042254
39 11 1 0.256197183
40 12 1 0.421971831
41 13 1 0.440422535
42 14 1 0.468028169
43 1 2 0.000422535
44 2 2 0.000422535
45 3 2 0.002676056
46 4 2 0.005915493
47 5 2 0.007746479
48 6 2 0.053239437
49 7 2 0.059718310
50 8 2 0.068309859
代码:
ggplot(df_rules_only, aes(x=RuleCount, y=Accuracy, group = TrainingPass, color = TrainingPass)) +
geom_line() +
scale_color_gradient(low = "green", high = "blue")
此图的结果:
我了解如何将数据保存到同一张图上。通过组合两个数据框并使用下面的代码,我可以将“ rules_only”数据添加到“ m4”图:
ggplot(df_Training, aes(x=ruleCount, y=m4Accuracy, group = training_pass, color = training_pass)) +
geom_line() +
scale_color_gradient(low = "green", high = "blue")+
geom_line(aes(x=ruleCount, y=rulesOnlyAccuracy))
此图的结果:
问题在于新数据与旧数据完全融合在一起,因为它具有相同的配色方案。
起初,我尝试将它们保留在相同的数据帧中,只是在上一个代码的最后一行添加“ color ='orange'”,但这给了我错误:“错误:离散值提供给连续刻度”
接下来,我将它们分成上面您看到的两个数据框,并尝试以这种方式绘制它们的图形:
ggplot(df_m4, aes(x=RuleCount, y=m4Accuracy, group = TrainingPass, color = TrainingPass)) +
geom_line() +
scale_color_gradient(low = "green", high = "blue")+
geom_line(df_rules_only, aes(x=RuleCount, y=Accuracy, color = "orange"))
但出现错误:“错误:mapping
必须由aes()
创建”
最近两次尝试都是在黑暗中拍摄,因为我找不到其他尝试,但是我敢肯定R不能那样工作。
我真的更希望使用ggplot的答案,因为其他图形从未如此好看。只是真的觉得我一直在解决所有这些错误,可以真正使用一些帮助!预先谢谢你:)
答案 0 :(得分:0)
非常复杂的问题,非常简单。想要将其移出评论,但@aosmith帮助了我。下面的代码使第二组数据具有不同的颜色:
ggplot(df_Training, aes(x=ruleCount, y=m4Accuracy, group = training_pass, color = training_pass)) +
geom_line() +
geom_line(aes(x=ruleCount, y=rulesOnlyAccuracy), color = "orange")
现在必须立即添加第二个图例!