我有一个类似下面的数据框。这只是54行的前9行。每个流名称重复18次,3个流名称(18 * 3 = 54)
stream n 1 2 3 means
1 Brooks 3 0.42707006 1.9353659 1.4333884 1.8566225
2 Siouxon 3 0.90503736 0.2838483 0.2838483 1.0023212
3 Speelyai 3 0.08554021 0.7359903 0.4841935 0.7359903
4 Brooks 4 1.43338843 1.8566225 0.0000000 1.3242210
5 Siouxon 4 0.50574543 0.5057454 0.2838483 0.4756304
6 Speelyai 4 0.32252396 0.4343109 0.6653132 2.2294652
7 Brooks 5 0.88984211 1.8566225 0.7741612 1.3242210
8 Siouxon 5 0.47501800 0.7383634 0.5482181 0.6430847
9 Speelyai 5 0.15079491 0.2615963 0.4738504 0.0000000
我还创建了vector
个值。有18个不同的值。每个流(总共3个)具有与该向量中的值相关的平均值。例如,数据帧中的前三行与向量(3)中的第一个值相关。接下来的三行(4:6)与向量(7.5)中的第二个值相关。事后看来,我应该将数据框中的n
列替换为费率向量中的值。这可能更有意义。
rates <- c(3,7.5,10,13,15,17,19.5,22,25.5,28,30.5,32,33.5,36,40.5,44,46,48.5)
我正在尝试在x轴上创建一个带有rates
的图,并在y轴上创建一个来自我的数据框的图。但是,我想为每个级别的因子创建一个图,在这种情况下,“stream”是在数据帧中找到的3级因子
Levels: Brooks Siouxon Speelyai
因此,回顾一下,我想对任何一个流采用“均值”列值并在Y轴上绘制它们,并在x上使用rates
向量。所以我应该有一个“布鲁克斯”的情节,它将有18分(18表示在费率向量中找到~18个比率)。
我现在已经更改了数据框,因此我可以取消费率向量。这是新的数据框架。
stream n rates means 1 2
1 Brooks 3 3.0 0.9629152 0.42707006 1.9353659
2 Siouxon 3 3.0 0.5831929 0.90503736 0.2838483
3 Speelyai 3 3.0 0.6199235 0.08554021 0.7359903
4 Brooks 4 7.5 0.9722707 1.43338843 1.8566225
5 Siouxon 4 7.5 0.5865031 0.50574543 0.5057454
6 Speelyai 4 7.5 0.6118634 0.32252396 0.4343109
7 Brooks 5 10.0 0.9637475 0.88984211 1.8566225
8 Siouxon 5 10.0 0.5804420 0.47501800 0.7383634
9 Speelyai 5 10.0 0.5959238 0.15079491 0.2615963
我希望这更清晰,更清洁。我仍然希望得到相同的结果,即每个流名称的图(所以三个图)在Y轴上的平均列中具有值,并且在X轴上的值列中具有值
答案 0 :(得分:0)
您可能正在寻找ggplot中的方面:
library(ggplot2)
ggplot(your_data, aes(x = rates, y = means)) +
geom_point() +
facet_wrap(~ stream)
要生成仅包含一个流的绘图,请将数据子集
ggplot(your_data[your_data$stream == "Brooks", ],
aes(x = rates, y = means)) +
geom_point()
单独执行所有流,如下所示:
individual_stream_data = split(your_data, your_data$stream)
individual_stream_plots = lapply(individual_stream_data,
function(x) {
ggplot(x, aes(x = rates, y = means)) +
geom_point() +
labs(title = x$stream[1])
})
这将生成一个图表列表,因此您可以打印它们或一次保存一次:
print(individual_stream_plots[[1]])
print(individual_stream_plots[[3]]) # etc.