簡體   English   中英

R-ggplot2-提取2行之間的點

[英]R - ggplot2 - Extract Points Between 2 Lines

任何幫助,將不勝感激。

在ggplot2中,我使用geom_point()繪制了多個點,並使用它繪制了2個geom_abline()。

第1行-> y = x(黑線)

第2行-> y = x + 3(橙色線)

XY圖

我想從該圖中提取位於第1行和第2行之間的區域中的點,並將其放置在單獨的數據框中。

碼:

test<-read.csv("H:\\Analysis/XY_Data.csv")
test_graph<-ggplot(test)+aes(x=test$X, y=test$Y)+
  geom_point(shape=4, colour="steelblue",size=3)+
  geom_abline(size=1)+
  geom_abline(intercept=3,size=1, colour="orange")+
  labs(x="X", y="Y")+
  scale_x_continuous(expand = c(0, 0), limits = c(0, 22))+
  scale_y_continuous(expand = c(0, 0), limits = c(0, 25))+
  theme_bw()
print(test_graph)

數據

+---------------------+
|       X    Y        |
+---------------------+
| 0    0.13           |
| 0    0.131333333    |
| 0    0.233333333    |
| 0    0.013333333    |
| 0    0.010666667    |
| 0    0.01           |
| 0    0.014          |
| 0    0.088666667    |
| 0    0.034666667    |
| 0    0.038666667    |
| 0    0.090666667    |
| 0    0.022          |
| 0    0.228          |
| 0    0.074666667    |
| 0    0.288666667    |
| 0    0.224          |
| 0    0.006          |
| 0    0.026666667    |
| 0    0.149333333    |
| 0    0.090666667    |
| 0    0.112          |
| 0    0.197333333    |
| 0    0.138          |
| 0    0.388          |
| 0    0.980666667    |
| 0    0.906666667    |
| 0    0.006666667    |
| 0.25    0.680666667 |
| 0    0.056666667    |
| 0    0.039333333    |
| 0    0.028          |
| 0    0.014666667    |
| 0    0.062          |
| 0    0.032666667    |
| 1    1.982666667    |
| 1    0.893333333    |
| 0    0.011333333    |
| 0.75    0.85        |
| 0.25    2.046       |
| 0    0.012666667    |
| 0    0.931333333    |
| 0    0.560666667    |
| 0    1.078          |
| 0    0.638          |
| 0    1.402666667    |
| 0    0.058666667    |
| 0    0.764          |
| 0.5    1.266666667  |
| 0    0.162          |
| 0.25    1.268       |
| 0    0.170666667    |
| 0    0.030666667    |
| 0    0.009333333    |
| 0    0.2            |
| 0    0.334          |
| 0    0.028          |
| 0.25    0.374       |
| 0    0.010666667    |
| 0    0.092666667    |
| 0    1.436          |
| 0    0.236          |
| 1.25    1.077333333 |
| 0    0.458666667    |
| 0    0.186666667    |
| 0    0.092          |
| 0    0.429333333    |
| 0    0.064666667    |
| 0    0.028666667    |
| 0    0.01           |
| 0    0.036          |
| 0    0.015333333    |
| 0    0.319333333    |
| 0    0.013333333    |
| 0.25    1.345333333 |
| 0    0.011333333    |
| 0    0.018666667    |
| 0    0.869333333    |
| 0.25    0.508666667 |
| 0    0.843333333    |
| 0    0.01           |
| 0    0.04           |
| 0    0.012          |
| 0    0.054          |
| 0    0.066666667    |
| 0    0.009333333    |
| 0.25    2.333333333 |
| 0    0.176          |
| 0    0.034          |
| 0    0.012666667    |
| 0    0.034          |
| 0    0.019333333    |
| 0    0.617333333    |
| 0    0.006          |
| 0    0.042          |
| 0    0.099333333    |
| 0    0.024          |
| 0    0.006          |
| 0    0.028          |
| 0    0.01           |
| 0    0.064666667    |
| 0.25    1.092666667 |
| 0.5    0.691333333  |
| 0    0.373333333    |
| 0    0.024          |
| 0.25    0.268666667 |
| 0.25    0.510666667 |
| 0    0.032666667    |
| 0    0.015333333    |
| 0    0.011333333    |
| 0    0.136666667    |
| 0    0.076666667    |
| 0    0.342666667    |
| 0    0.089333333    |
| 0    0.042666667    |
| 0    0.068          |
| 0    0.020666667    |
| 0    0.538666667    |
| 0    0.088          |
| 0.25    0.028       |
| 0    0.065333333    |
| 0    0.474          |
| 0    0.091333333    |
| 0    2.816666667    |
| 0    0.014          |
| 0    0.030666667    |
| 0    2.243333333    |
| 0    0.006          |
| 0.75    0.126666667 |
| 0.25    0.048       |
| 5.5    0.738666667  |
| 0    0.025333333    |
| 0    0.039333333    |
| 0    0.163333333    |
| 0    0.325333333    |
| 0    0.040666667    |
| 0    0.018          |
| 0.75    2.746666667 |
| 0    0.026          |
| 0    0.018666667    |
| 0    0.068666667    |
| 0    0.008666667    |
| 0    21.53866667    |
| 0.25    0.028666667 |
| 2.5    0.616666667  |
| 0    0.052          |
| 0    0.054          |
| 0    0.060666667    |
+---------------------+

謝謝,

這是dplyr解決方案。 首先,我創建數據框。

df <- read.table(text = "0    0.13           |
0    0.131333333    |
           0    0.233333333    |
           0    0.013333333    |
           0    0.010666667    |
           0    0.01           |
           0    0.014          |
           0    0.088666667    |
           0    0.034666667    |
           0    0.038666667    |
           0    0.090666667    |
           0    0.022          |
           0    0.228          |
           0    0.074666667    |
           0    0.288666667    |
           0    0.224          |
           0    0.006          |
           0    0.026666667    |
           0    0.149333333    |
           0    0.090666667    |
           0    0.112          |
           0    0.197333333    |
           0    0.138          |
           0    0.388          |
           0    0.980666667    |
           0    0.906666667    |
           0    0.006666667    |
           0.25    0.680666667 |
           0    0.056666667    |
           0    0.039333333    |
           0    0.028          |
           0    0.014666667    |
           0    0.062          |
           0    0.032666667    |
           1    1.982666667    |
           1    0.893333333    |
           0    0.011333333    |
           0.75    0.85        |
           0.25    2.046       |
           0    0.012666667    |
           0    0.931333333    |
           0    0.560666667    |
           0    1.078          |
           0    0.638          |
           0    1.402666667    |
           0    0.058666667    |
           0    0.764          |
           0.5    1.266666667  |
           0    0.162          |
           0.25    1.268       |
           0    0.170666667    |
           0    0.030666667    |
           0    0.009333333    |
           0    0.2            |
           0    0.334          |
           0    0.028          |
           0.25    0.374       |
           0    0.010666667    |
           0    0.092666667    |
           0    1.436          |
           0    0.236          |
           1.25    1.077333333 |
           0    0.458666667    |
           0    0.186666667    |
           0    0.092          |
           0    0.429333333    |
           0    0.064666667    |
           0    0.028666667    |
           0    0.01           |
           0    0.036          |
           0    0.015333333    |
           0    0.319333333    |
           0    0.013333333    |
           0.25    1.345333333 |
           0    0.011333333    |
           0    0.018666667    |
           0    0.869333333    |
           0.25    0.508666667 |
           0    0.843333333    |
           0    0.01           |
           0    0.04           |
           0    0.012          |
           0    0.054          |
           0    0.066666667    |
           0    0.009333333    |
           0.25    2.333333333 |
           0    0.176          |
           0    0.034          |
           0    0.012666667    |
           0    0.034          |
           0    0.019333333    |
           0    0.617333333    |
           0    0.006          |
           0    0.042          |
           0    0.099333333    |
           0    0.024          |
           0    0.006          |
           0    0.028          |
           0    0.01           |
           0    0.064666667    |
           0.25    1.092666667 |
           0.5    0.691333333  |
           0    0.373333333    |
           0    0.024          |
           0.25    0.268666667 |
           0.25    0.510666667 |
           0    0.032666667    |
           0    0.015333333    |
           0    0.011333333    |
           0    0.136666667    |
           0    0.076666667    |
           0    0.342666667    |
           0    0.089333333    |
           0    0.042666667    |
           0    0.068          |
           0    0.020666667    |
           0    0.538666667    |
           0    0.088          |
           0.25    0.028       |
           0    0.065333333    |
           0    0.474          |
           0    0.091333333    |
           0    2.816666667    |
           0    0.014          |
           0    0.030666667    |
           0    2.243333333    |
           0    0.006          |
           0.75    0.126666667 |
           0.25    0.048       |
           5.5    0.738666667  |
           0    0.025333333    |
           0    0.039333333    |
           0    0.163333333    |
           0    0.325333333    |
           0    0.040666667    |
           0    0.018          |
           0.75    2.746666667 |
           0    0.026          |
           0    0.018666667    |
           0    0.068666667    |
           0    0.008666667    |
           0    21.53866667    |
           0.25    0.028666667 |
           2.5    0.616666667  |
           0    0.052          |
           0    0.054          |
           0    0.060666667    |")[, 1:2]

然后,我將列命名為XY

names(df) <- c("X", "Y")

最后,我應用條件並將結果存儲在新的數據框中。

df_filtered <- df %>% 
  filter(Y > X, Y < X + 3)

#        X           Y
# 1   0.00 0.130000000
# 2   0.00 0.131333333
# 3   0.00 0.233333333
# 4   0.00 0.013333333
# 5   0.00 0.010666667
# 6   0.00 0.010000000
# 7   0.00 0.014000000
# 8   0.00 0.088666667
# 9   0.00 0.034666667
# 10  0.00 0.038666667
# 11  0.00 0.090666667
# 12  0.00 0.022000000
# 13  0.00 0.228000000
# 14  0.00 0.074666667
# 15  0.00 0.288666667
# 16  0.00 0.224000000
# 17  0.00 0.006000000
# 18  0.00 0.026666667
# 19  0.00 0.149333333
# 20  0.00 0.090666667
# 21  0.00 0.112000000
# 22  0.00 0.197333333
# 23  0.00 0.138000000
# 24  0.00 0.388000000
# 25  0.00 0.980666667
# 26  0.00 0.906666667
# 27  0.00 0.006666667
# 28  0.25 0.680666667
# 29  0.00 0.056666667
# 30  0.00 0.039333333
# 31  0.00 0.028000000
# 32  0.00 0.014666667
# 33  0.00 0.062000000
# 34  0.00 0.032666667
# 35  1.00 1.982666667
# 36  0.00 0.011333333
# 37  0.75 0.850000000
# 38  0.25 2.046000000
# 39  0.00 0.012666667
# 40  0.00 0.931333333
# 41  0.00 0.560666667
# 42  0.00 1.078000000
# 43  0.00 0.638000000
# 44  0.00 1.402666667
# 45  0.00 0.058666667
# 46  0.00 0.764000000
# 47  0.50 1.266666667
# 48  0.00 0.162000000
# 49  0.25 1.268000000
# 50  0.00 0.170666667
# 51  0.00 0.030666667
# 52  0.00 0.009333333
# 53  0.00 0.200000000
# 54  0.00 0.334000000
# 55  0.00 0.028000000
# 56  0.25 0.374000000
# 57  0.00 0.010666667
# 58  0.00 0.092666667
# 59  0.00 1.436000000
# 60  0.00 0.236000000
# 61  0.00 0.458666667
# 62  0.00 0.186666667
# 63  0.00 0.092000000
# 64  0.00 0.429333333
# 65  0.00 0.064666667
# 66  0.00 0.028666667
# 67  0.00 0.010000000
# 68  0.00 0.036000000
# 69  0.00 0.015333333
# 70  0.00 0.319333333
# 71  0.00 0.013333333
# 72  0.25 1.345333333
# 73  0.00 0.011333333
# 74  0.00 0.018666667
# 75  0.00 0.869333333
# 76  0.25 0.508666667
# 77  0.00 0.843333333
# 78  0.00 0.010000000
# 79  0.00 0.040000000
# 80  0.00 0.012000000
# 81  0.00 0.054000000
# 82  0.00 0.066666667
# 83  0.00 0.009333333
# 84  0.25 2.333333333
# 85  0.00 0.176000000
# 86  0.00 0.034000000
# 87  0.00 0.012666667
# 88  0.00 0.034000000
# 89  0.00 0.019333333
# 90  0.00 0.617333333
# 91  0.00 0.006000000
# 92  0.00 0.042000000
# 93  0.00 0.099333333
# 94  0.00 0.024000000
# 95  0.00 0.006000000
# 96  0.00 0.028000000
# 97  0.00 0.010000000
# 98  0.00 0.064666667
# 99  0.25 1.092666667
# 100 0.50 0.691333333
# 101 0.00 0.373333333
# 102 0.00 0.024000000
# 103 0.25 0.268666667
# 104 0.25 0.510666667
# 105 0.00 0.032666667
# 106 0.00 0.015333333
# 107 0.00 0.011333333
# 108 0.00 0.136666667
# 109 0.00 0.076666667
# 110 0.00 0.342666667
# 111 0.00 0.089333333
# 112 0.00 0.042666667
# 113 0.00 0.068000000
# 114 0.00 0.020666667
# 115 0.00 0.538666667
# 116 0.00 0.088000000
# 117 0.00 0.065333333
# 118 0.00 0.474000000
# 119 0.00 0.091333333
# 120 0.00 2.816666667
# 121 0.00 0.014000000
# 122 0.00 0.030666667
# 123 0.00 2.243333333
# 124 0.00 0.006000000
# 125 0.00 0.025333333
# 126 0.00 0.039333333
# 127 0.00 0.163333333
# 128 0.00 0.325333333
# 129 0.00 0.040666667
# 130 0.00 0.018000000
# 131 0.75 2.746666667
# 132 0.00 0.026000000
# 133 0.00 0.018666667
# 134 0.00 0.068666667
# 135 0.00 0.008666667
# 136 0.00 0.052000000
# 137 0.00 0.054000000
# 138 0.00 0.060666667

在下面,紅色點在線條內,黑色點在線條內。

在此處輸入圖片說明

產生,

g <- ggplot()
g <- g + geom_point(data = df %>% anti_join(df_filtered), aes(X, Y), colour = "black", size = 3)
g <- g + geom_point(data = df_filtered, aes(X, Y), colour = "#FF3300", size = 3)
g <- g + kitchendraw::theme_ocean() # From https://github.com/DanielReedOcean/kitchendraw
g <- g + geom_abline(intercept = 0, slope = 1, colour = "black")
g <- g + geom_abline(intercept = 3, slope = 1, colour = "orange")
g

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM