当前位置:  开发笔记 > 编程语言 > 正文

R:在ggplot中的两点之间划一条线

如何解决《R:在ggplot中的两点之间划一条线》经验,为你挑选了1个好方法。

我的数据框看起来像这样:

X      Y
100    50
80     60
70     90
110    60
30     20
... ...

大约100行以上.X列和Y列都是数字

当我绘制这些点时,我想在第一点(100,50)和任何其余点之间画一条线.换句话说,我想有一条线连接(100,50)和(80,60),一条线连接(100,50)和(70,90),一条线连接(100,50)和(110) ,60)但是(80,60)和(70,90)之间没有界限.所有行都从第一点开始.

我没有第三栏.我不能用团体.我想知道我是否仍然可以在ggplot中绘制这个图表.

谢谢



1> Stibu..:

想法是使用组.为此,您必须添加可用于分组的第三列.实现此目的的可能方式如下.

首先,我定义了样本数据

df <- read.table(text = "X      Y
      100    50
      80     60
      70     90
      110    60
      30     20", header = TRUE)

然后,我创建一个新的数据框,其中第一行重复其他每一行.grp添加一个列,将第一行的每个重复链接到其他行之一:

n <- nrow(df) - 1
new_data <- data.frame(X = c(rep(df$X[1], n), df$X[-1]),
                       Y = c(rep(df$Y[1], n), df$Y[-1]))
new_data$grp <- as.factor(rep(1:n, times = 2))
new_data
##     X  Y grp
## 1 100 50   1
## 2 100 50   2
## 3 100 50   3
## 4 100 50   4
## 5  80 60   1
## 6  70 90   2
## 7 110 60   3
## 8  30 20   4

现在,可以使用ggplot直接创建绘图:

library(ggplot2)
ggplot(new_data, aes(X, Y, group = grp)) + 
   geom_point() + geom_line()

在此输入图像描述

美观group 控制哪些点应该通过线连接.由于列grpnew_data送花儿给人对第一行与每一个其他行的的重复,对应于第一行的点被连接到每一个其它点的.

如果省略group = grp,则绘制一条通过所有点的单线图.


只是一个附加组件,可以使用aes(X,Y,group = 1)连接所有点,而无需生成新列。
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有