如何通过折线图将y轴上的所有点连接到同一组ggplot的x轴点

时间:2018-03-28 04:51:41

标签: r plot ggplot2

我是R的新手并且正在为朋友玩一些ggplot逻辑。我试图将Y轴上的所有点连接到属于同一组的x轴上的点。但我的Y轴点也正在连接,我不想要

ggplot(data=data, aes(x= Letter_coding, y= Lectin_C, group=Island, 
color = Island)) +
geom_line()+
geom_point() 

像这样。

enter image description here

But I’m trying to achieve this

修改1:

示例数据:

Organism            Letter_coding   Island          Lectin_C    
Coral (Pocillopora)     A           FlintMos3_2     77.42858683 
Coral (Pocillopora)     A           FlintMos3_2     206.5272288 
C-A (Red Algae)         B           FlintMos3_2     201.8928979 
Coral (Porites)         C           FlintMos3_5     100.0270507 
Coral (Porites)         C           FlintMos3_5     116.1427727 
C-A (Red Algae)         D           FlintMos3_5     113.2093909 
Coral (Porites)         E           FlintMos5_2     148.1921679 
C-C                     F           FlintMos5_2     140.8645009 
Coral (Porites)         E           FlintMos5_2     120.3082097 
Coral (Porites)         G           MaldInv         259.2967552 
Coral (Porites)         G           MaldInv         238.4524644 
C-A (CCA)               H           MaldInv         58.82896626 
Coral (Porites)         C           StarTent        137.056068  
Coral (Porites)         C           StarTent        107.1444611 
C-A (Red Algae)         D           StarTent        120.4673744 
Coral (Porites)         G           VostMos_2       162.9043976 
Coral (Porites)         G           VostMos_2       202.3885923 
C-A (CCA)               H           VostMos_2       144.3439106
Coral (Porites)         I           VostMos_4       309.4388754 
Coral (Porites)         I           VostMos_4       276.9731826 
C-C                     J           VostMos_4       170.3126185
Coral (Montipora)       I           VostMos_4       181.4586178 
Coral (Montipora)       I           VostMos_4       158.7184731 

任何帮助将不胜感激。感谢

2 个答案:

答案 0 :(得分:1)

您似乎希望按岛分组数据,然后通过线将珊瑚生物连接到C_有机体。您可以通过使用tidyverse中的多个函数以直接的方式执行此操作,如下所示。

#
# Load tidyverse which includes the ggplot2, dplyr, and stringr packages  
#
   library(tidyverse)
#
#  Data should be in island_data
#  Separate Coral and C_ organisms
#
   coral <- island_data %>% filter(str_detect(Organism, "Coral"))
   C_dash <- island_data %>% filter(str_detect(Organism, "C-"))
#
#   Make data for line segment ends by joining coral and C_ data
#
   plt_data <- left_join(coral, C_dash, by = "Island", suffix = c("","_C") ) 
   sp <-  plt_data %>% ggplot(aes( color = Island)) +  
          geom_segment(aes( x= Letter_coding, y = Lectin_C, xend = Letter_coding_C, yend = Lectin_C_C), size=1.1) +
           geom_point(aes(x= Letter_coding, y=Lectin_C), size = 4) +
           geom_point(aes(x = Letter_coding_C, y = Lectin_C_C), size = 4)

   plot(sp)

这给出了情节

enter image description here

答案 1 :(得分:0)

我将在一开始就说明,这个答案不能直接回答你的问题。我认为你需要解决两个问题。

首先:使用线连接点的理由是什么?通常,我们会在一段时间内发生变化时这样做。这在您的数据中并不明显。

第二:你想在图表中传达的数据是什么?我看到了一个因变量Lectin_C和两个类别:IslandOrganism。字母编码我不完全明白。那么有趣的是什么?是Lectin_C是由岛屿,有机体,还是两者兼而有之?

如果我正在绘制这些数据,我会将这些值绘制为抖动点,颜色由岛屿或生物体之一绘制,并将数据按生物体或岛屿分成组(面)。例如,如果我们主要感谢Lectin_C Organism

library(tidyverse)
coral_data %>% 
ggplot(aes(Letter_coding, Lectin_C)) + 
  geom_jitter(aes(color = Island)) + 
  facet_wrap(~Organism) + theme_bw()

enter image description here

或者相反,如果我们想通过Island查看Lectin_C

enter image description here