我正在尝试制作一个稀土元素蜘蛛图,将浓度在log10上放置在y轴上,并将来自稀土元素的各个元素放置在x轴上。然后,我试图将几个岩石单位相互比较。我正在寻找和得到的东西的示例已添加到下面的Google文档链接中。
因此,使用添加的代码,我遇到两个问题: 1.元素是按字母顺序在x轴上列出的,而不是我在CSV中的顺序 2.我不知道我的代码中缺少什么来将每个样本中的点关联在一起以构建一条线。加上我不知道这是我的代码还是CSV数据排列方式的问题。
我看到其他人通过将各个元素视为日期来解决此问题。我玩过lubridate,但是我觉得它不如我在下面添加的代码那么成功。
ggplot(data=dataMGSREE) +
geom_point(mapping = aes(x = Concentration, y = Element, color=Group), show.legend = FALSE) +
coord_flip() +
scale_x_log10()
Analysis Name Element Concentration
HM030218-2 Haycock Upper La 65.00
HM030218-2 Haycock Upper Ce 127.00
HM030218-2 Haycock Upper Pr 13.46
HM030218-2 Haycock Upper Nd 44.00
HM030218-2 Haycock Upper Sm 6.70
HM030218-2 Haycock Upper Eu 0.75
HM030218-2 Haycock Upper Gd 4.48
HM030218-2 Haycock Upper Tb 0.64
HM030218-2 Haycock Upper Dy 3.40
HM030218-2 Haycock Upper Ho 0.73
1-10 of 14 rows
上面列出了与预期结果类似的结果,而实际结果在此处:https://docs.google.com/document/d/1p7QY8Ie_bmav1XApTSy1TCECvteUcxckZXpsy9Ib7Ew/edit?usp=sharing
也请原谅我不知道如何在此处上传屏幕截图。
答案 0 :(得分:1)
发生了几件事
geom_line()
。您还需要添加一组外观来指示要连接的点,大概是group = Analysis
中的aes()
。每当您在轴上绘制带有离散变量的线时,这都是必需的。aes()
放在原始ggplot()
调用中,它将同时传递到geom_point()
和{ {1}},因此您不必在后续层中重新指定geom_line()
的理由,我只是从一开始就映射了您想在coord_flip
和x
上进行的操作y
的列,所以我很惊讶您的Group
可以正常工作... 类似这样的东西:
color = Group
答案 1 :(得分:0)
像Element
之类的离散数据的轴顺序由设置因子水平决定的。看起来这里的因子水平应该与它们在数据中的顺序相同,因此您可以执行以下操作:
dataMGSREE$Element = factor(dataMGSREE$Element, levels = dataMGSREE$Element)
ggplot(data=dataMGSREE) +
# I set color = Analysis here because the example data didn't
# contain a Group column, replace as appropriate
geom_point(mapping = aes(x = Concentration, y = Element, color=Analysis),
show.legend = FALSE) +
coord_flip() +
scale_x_log10()