gpt4 book ai didi

r - 使用 geom_line() 在 ggplot2 中进行线型映射

转载 作者:行者123 更新时间:2023-12-02 08:22:13 26 4
gpt4 key购买 nike

我有一个看起来像这样的数据集:

   case prop weight  res
1 A 10 0.1 0.81
2 A 20 0.2 0.78
3 A 30 0.3 0.76
4 A 40 0.4 0.58
5 A 50 0.1 0.62
6 A 10 0.2 0.73
7 A 20 0.3 0.68
8 A 30 0.4 0.70
9 A 40 0.1 0.55
10 A 50 0.2 0.78
11 A 10 0.3 0.64
12 A 20 0.4 0.68
13 A 30 0.1 0.75
14 A 40 0.2 0.67
15 A 50 0.3 0.59
16 A 10 0.4 0.77
17 A 20 0.1 0.57
18 A 30 0.2 0.61
19 A 40 0.3 0.60
20 A 50 0.4 0.72
21 B 10 0.1 0.66
22 B 20 0.2 0.66
23 B 30 0.3 0.76
24 B 40 0.4 0.57
25 B 50 0.1 0.83
26 B 10 0.2 0.68
27 B 20 0.3 0.76
28 B 30 0.4 0.65
29 B 40 0.1 0.70
30 B 50 0.2 0.72
31 B 10 0.3 0.60
32 B 20 0.4 0.82
33 B 30 0.1 0.85
34 B 40 0.2 0.72
35 B 50 0.3 0.74
36 B 10 0.4 0.67
37 B 20 0.1 0.60
38 B 30 0.2 0.62
39 B 40 0.3 0.76
40 B 50 0.4 0.87
41 C 10 0.1 0.48
42 C 20 0.2 0.77
43 C 30 0.3 0.70
44 C 40 0.4 0.65
45 C 50 0.1 0.73
46 C 10 0.2 0.70
47 C 20 0.3 0.80
48 C 30 0.4 0.68
49 C 40 0.1 0.58
50 C 50 0.2 0.63
51 C 10 0.3 0.71
52 C 20 0.4 0.68
53 C 30 0.1 0.84
54 C 40 0.2 0.66
55 C 50 0.3 0.77
56 C 10 0.4 0.67
57 C 20 0.1 0.64
58 C 30 0.2 0.74
59 C 40 0.3 0.81
60 C 50 0.4 0.62

可以通过以下代码生成数据:
 case = rep(c("A", "B", "C"), each=20)
prop = rep(c("10", "20", "30", "40", "50"), 12)
weight = as.factor(rep(c(0.1, 0.2, 0.3, 0.4), 15))
res = round(rnorm(n=60, 0.7, 0.1), 2)

dat = data.frame(case, prop, weight, res)
dat

我想要实现的是将“prop”作为x轴,“res”作为y轴,同时使用不同的颜色来区分“case”,使用不同的线型来区分“weight”。例如,如果权重=0.1,则使用实线;如果 weight=0.2,使用虚线等。从下面的代码:
ggplot(data = dat, aes(x=prop, y=res, group=case, color=case)) +
geom_line() +
geom_point() +
theme_bw()

我只能得到以下不想要的图...
enter image description here

我尝试添加 geom_line(aes(linetype=weight)) ,但错误显示
Error: geom_path: If you are using dotted or dashed lines, colour, size and linetype must be constant over the line

有没有办法将“重量”映射到 ggplot2 中的线型?谢谢!

最佳答案

您可以创建一个新变量来分组并用于指定线型..

dat$case.weight <- paste0(dat$case, dat$weight)

.. 并添加 scale_linetype_manual() :
ggplot(data = dat, aes(x=prop, y=res, group=case.weight, color=case, linetype=case.weight)) +
scale_linetype_manual(values=rep(c("solid", "dashed", "dotted", "dotdash"),3),
breaks=c("A0.1","A0.2", "A0.3", "A0.4"),
labels=c("0.1", "0.2", "0.3", "0.4"),
name="weight") +
geom_line() +
geom_point() +
theme_bw()

enter image description here

关于r - 使用 geom_line() 在 ggplot2 中进行线型映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35941983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com