建立这个图块我想念什么?

时间:2019-06-18 00:27:59

标签: r ggplot2

我正在尝试制作一个稀土元素蜘蛛图,将浓度在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

也请原谅我不知道如何在此处上传屏幕截图。

2 个答案:

答案 0 :(得分:1)

发生了几件事

  • (a)如果需要线条,则需要在绘图中添加geom_line()。您还需要添加一组外观来指示要连接的点,大概是group = Analysis中的aes()。每当您在轴上绘制带有离散变量的线时,这都是必需的。
  • (b)有关获取元素的自定义顺序的信息,请参见this FAQ
  • (c)如果需要点线,请将aes()放在原始ggplot()调用中,它将同时传递到geom_point()和{ {1}},因此您不必在后续层中重新指定
  • (d)我没有看到在这里使用geom_line()的理由,我只是从一开始就映射了您想在coord_flipx上进行的操作
  • (e)您没有在数据中显示名为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()