我有一个数据集(A.plot
),由于数据的缘故,看起来好像已经使用熔解器融化了。第1列是称为Prov
的样本(9个样本名称各重复10次),第2列是step,称为Steg
(1:10重复10次),第3:30列是不同的金属。样本和步骤本身不是唯一的,但是如果将它们连接在一起,则将获得真正的唯一样本名称。我创建了一个包含所有名为Element
的金属名称的向量。
str(A.plot)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 99 obs. of 31 variables:
$ Prov: chr "A-HCl" "A-HCl" "A-HCl" "A-HCl" ...
$ Steg: num 0 1 2 3 4 5 6 7 8 9 ...
$ Li : num 1.51 4.22 4.76 5.3 8.89 ...
$ Be : num 0.204 0.559 0.802 0.841 0.295 ...
$ Na : num 6097217 5991299 5819005 5921011 6042524 ...
$ Mg : num 405 22524 333229 553882 879715 ...
$ Al : num 446 459 525 508 503 ...
$ K : num 549282 505039 500718 515440 535693 ...
仅使用以下代码绘制一种金属:
A.test.plot <- A.plot[ , c( 1:2, 12) ]
colnames(A.test.plot) <- c("Prov", "Steg", "value")
library(ggplot2)
library(tidyr)
ggplot(A.test.plot, aes(x=Steg, y=value, colour=Prov, group=Prov)) +
geom_line()
我可以得到我希望每种金属如何显示的图:
问题是,我希望所有的金属都集中在facet_wrap
中。我以前曾使用collect()来facet_wrap
几种金属,但是每种金属(每个面板)只有一组数据/值。现在,我要在每个面板中输入几(9)组值,看来我以错误的方式输入了gather()
。
我尝试过:
A.test.plot1 <- A.plot
colnames(A.test.plot1) <- c("Prov", "Steg", Element)
gather(A.test.plot1, key = Element, value, -"Steg", -"Prov")
ggplot(gather(A.test.plot1, key=Element, value="value", -"Steg", -"Prov"), aes(x=Steg, y=Element, colour=Prov, group=Prov) ) +
geom_point() +
facet_wrap(~ Element, scales = 'free')
但是它似乎“聚集了很多”:
我还尝试了几种从收集函数和ggplot中删除Steg / Element / Prov的组合,但这只能使我离目标更远。
我缺少什么/做错了什么?
我看过this question,但是数据集已从链接中消失了,并且我不够熟练,无法为我的数据重现解决方案。我也看过another question,但我认为软件包lubridate
在这里不适用。
编辑:根据要求提供示例数据:https://docs.google.com/document/d/1_d5xWdIdsH2nl-E_YggTSTON3swP0tSehurLQqtFrt8/edit?usp=sharing 请注意,由于有许多小数,因此它很大。