ggplot2 - 将形状和颜色图例与通用标题相结合

Bri*_*els 7 r ggplot2

我有一个看起来像这样的数据框.

    lambda  lambdas mu  p
1   0.5 0.25 3.6 1.931105
2   0.5 0.25 3.8 2.150458
3   0.5 0.25 4.0 2.264805
4   0.5 0.25 4.2 2.337036
5   0.5 0.25 4.4 2.385832
6   0.5 0.25 4.6 2.420036
7   0.5 0.25 4.8 2.444610
8   0.5 0.25 5.0 2.462598
9   0.5 0.25 5.2 2.475974
10  0.5 0.25 5.4 2.486068
11  0.5 0.25 5.6 2.493801
12  0.5 0.25 5.8 2.499824
13  0.5 0.25 6.0 2.504604
14  0.5 0.25 6.2 2.508482
15  0.5 0.25 6.4 2.511708
16  0.5 0.25 6.6 2.514465
17  0.5 0.25 6.8 2.516892
18  0.5 0.25 7.0 2.519091
19  0.5 0.25 7.2 2.521137
20  0.5 0.25 7.4 2.523088
21  0.5 0.25 7.6 2.524984
22  0.5 0.25 7.8 2.526858
23  0.5 0.25 8.0 2.528729
24  0.5 0.3 4.0 1.453073
25  0.5 0.3 4.2 1.676078
26  0.5 0.3 4.4 1.769432
27  0.5 0.3 4.6 1.829259
28  0.5 0.3 4.8 1.871153
29  0.5 0.3 5.0 1.901801
30  0.5 0.3 5.2 1.924841
31  0.5 0.3 5.4 1.942502
32  0.5 0.3 5.6 1.956246
33  0.5 0.3 5.8 1.967078
34  0.5 0.3 6.0 1.975710
35  0.5 0.3 6.2 1.982661
36  0.5 0.3 6.4 1.988317
37  0.5 0.3 6.6 1.992968
38  0.5 0.3 6.8 1.996834
39  0.5 0.3 7.0 2.000085
40  0.5 0.3 7.2 2.002856
41  0.5 0.3 7.4 2.005248
42  0.5 0.3 7.6 2.007343
43  0.5 0.3 7.8 2.009207
44  0.5 0.3 8.0 2.010890
45  0.5 0.35 4.8 1.330792
46  0.5 0.35 5.0 1.415920
47  0.5 0.35 5.2 1.466734
48  0.5 0.35 5.4 1.502578
49  0.5 0.35 5.6 1.529478
50  0.5 0.35 5.8 1.550365
51  0.5 0.35 6.0 1.566948
52  0.5 0.35 6.2 1.580327
53  0.5 0.35 6.4 1.591256
54  0.5 0.35 6.6 1.600275
55  0.5 0.35 6.8 1.607783
56  0.5 0.35 7.0 1.614081
57  0.5 0.35 7.2 1.619400
58  0.5 0.35 7.4 1.623922
59  0.5 0.35 7.6 1.627789
60  0.5 0.35 7.8 1.631118
61  0.5 0.35 8.0 1.634000
62  0.5 0.4 6.0 1.093701
63  0.5 0.4 6.2 1.177399
64  0.5 0.4 6.4 1.214441
65  0.5 0.4 6.6 1.240465
66  0.5 0.4 6.8 1.260447
67  0.5 0.4 7.0 1.276454
68  0.5 0.4 7.2 1.289608
69  0.5 0.4 7.4 1.300606
70  0.5 0.4 7.6 1.309920
71  0.5 0.4 7.8 1.317887
72  0.5 0.4 8.0 1.324755
Run Code Online (Sandbox Code Playgroud)

使用"scale_fill_discrete",我可以将形状和颜色图例合并为一个,但图例的标题不起作用.换一种说法:

plot = ggplot(data, aes(x = mu, y = p, color = lambdas, shape = lambdas))
plot = plot + geom_line()
plot = plot + geom_point(size = 2.5)
plot = plot + scale_fill_discrete(name = expression(lambda^{s}))
plot = plot + ylim(0,3)
plot = plot + ggtitle(expression(paste(p, ' when ', lambda, '= 0.5', sep = ''))) 
plot = plot + xlab(expression(mu)) + ylab(expression(p))
plot
Run Code Online (Sandbox Code Playgroud)

这段代码给出了下面的图片. 在此输入图像描述

另一方面,如果我使用"scale_shape_discrete"和"scale_color discrete",那么标题就可以了,但是传说现在已经分开了.换一种说法:

plot = ggplot(data, aes(x = mu, y = p, color = lambdas, shape = lambdas))
plot = plot + geom_line()
plot = plot + geom_point(size = 2.5)
plot = plot + scale_shape_discrete(name = expression(lambda^{s}))
plot = plot + scale_color_discrete(name = expression(lambda^{s}))
plot = plot + ylim(0,3)
plot = plot + ggtitle(expression(paste(p, ' when ', lambda, '= 0.5', sep = ''))) 
plot = plot + xlab(expression(mu)) + ylab(expression(p))
plot
Run Code Online (Sandbox Code Playgroud)

这段代码给出了下面的图片. 在此输入图像描述

有没有办法把传说放在一起,并在第二张图片中有标题?谢谢.

ton*_*nov 11

那么,原本ggplot使用如果合成传说valuesname是常见的两种或更多aes.在你的情况下,这是如此(你指定相同的名称),但可能是expression因为混乱,所以ggplot认为传奇标题是不同的.

让我们通过使用l <- expression(lambda^{s})和超越他

plot + labs(color=l, shape=l)
Run Code Online (Sandbox Code Playgroud)

省略scale_shapescale_color彻底.

在此输入图像描述