在 R 中使用 ggplot2 的具有单个椭圆的散点图中的点
Points in a scatterplot with individual ellipses using ggplot2 in R
我的数据集由4列组成,如下图:
左边两列代表一个地理结构的坐标XY,左边两列代表"each"地理单元的大小(直径南北和东西)
我想以图形方式表示一个散点图,在其中绘制所有坐标并在每个点上绘制一个椭圆,包括每个地理单位的直径。
手动,只使用两个点,图像应该是这样的:
我如何使用 ggplot2 来完成?
您可以下载数据here
使用来自 ggforce 的 geom_ellipse()
:
library(ggplot2)
library(ggforce)
d <- data.frame(
x = c(10, 20),
y = c(10, 20),
ns = c(5, 8),
ew = c(4, 4)
)
ggplot(d, aes(x0 = x, y0 = y, a = ew/2, b = ns/2, angle = 0)) +
geom_ellipse() +
coord_fixed()
由 reprex package (v0.2.1)
于 2019-06-01 创建
我不会向 添加任何新代码。所有的功劳都应该归功于克劳斯。我只是用实际数据对其进行测试,并向 OP 展示如何 post 数据,
正在加载需要的包
# install.packages(c("tidyverse"), dependencies = TRUE)
library(tidyverse)
正在读取数据,
tbl <- read.table(
text = "
X Y Diameter_N_S Diameter_E_W
-4275 1145 77 96
-4855 1330 30 25
-4850 1612 45 90
-4990 1410 15 15
-5055 1230 60 50
-5065 1503 43 45
-5135 1305 40 50
-5505 1190 55 70
-5705 1430 90 40
-5645 1535 52 60
", header = TRUE, stringsAsFactors = FALSE) %>% as_tibble()
正在显示数据,
tbl
#> # A tibble: 10 x 4
#> X Y Diameter_N_S Diameter_E_W
#> <int> <int> <int> <int>
#> 1 -4275 1145 77 96
#> 2 -4855 1330 30 25
#> 3 -4850 1612 45 90
#> 4 -4990 1410 15 15
#> 5 -5055 1230 60 50
#> 6 -5065 1503 43 45
#> 7 -5135 1305 40 50
#> 8 -5505 1190 55 70
#> 9 -5705 1430 90 40
#> 10 -5645 1535 52 60
加载更多需要的包
library(ggforce) # devtools::install_github("thomasp85/ggforce")
正在执行
ggplot(tbl, aes(x0 = X, y0 = Y, a = Diameter_E_W, b = Diameter_N_S, angle = 0)) +
geom_ellipsis() + geom_point(aes(X, Y), size = .5) + coord_fixed() + theme_bw()
我的数据集由4列组成,如下图:
左边两列代表一个地理结构的坐标XY,左边两列代表"each"地理单元的大小(直径南北和东西)
我想以图形方式表示一个散点图,在其中绘制所有坐标并在每个点上绘制一个椭圆,包括每个地理单位的直径。
手动,只使用两个点,图像应该是这样的:
我如何使用 ggplot2 来完成?
您可以下载数据here
使用来自 ggforce 的 geom_ellipse()
:
library(ggplot2)
library(ggforce)
d <- data.frame(
x = c(10, 20),
y = c(10, 20),
ns = c(5, 8),
ew = c(4, 4)
)
ggplot(d, aes(x0 = x, y0 = y, a = ew/2, b = ns/2, angle = 0)) +
geom_ellipse() +
coord_fixed()
由 reprex package (v0.2.1)
于 2019-06-01 创建我不会向
正在加载需要的包
# install.packages(c("tidyverse"), dependencies = TRUE)
library(tidyverse)
正在读取数据,
tbl <- read.table(
text = "
X Y Diameter_N_S Diameter_E_W
-4275 1145 77 96
-4855 1330 30 25
-4850 1612 45 90
-4990 1410 15 15
-5055 1230 60 50
-5065 1503 43 45
-5135 1305 40 50
-5505 1190 55 70
-5705 1430 90 40
-5645 1535 52 60
", header = TRUE, stringsAsFactors = FALSE) %>% as_tibble()
正在显示数据,
tbl
#> # A tibble: 10 x 4
#> X Y Diameter_N_S Diameter_E_W
#> <int> <int> <int> <int>
#> 1 -4275 1145 77 96
#> 2 -4855 1330 30 25
#> 3 -4850 1612 45 90
#> 4 -4990 1410 15 15
#> 5 -5055 1230 60 50
#> 6 -5065 1503 43 45
#> 7 -5135 1305 40 50
#> 8 -5505 1190 55 70
#> 9 -5705 1430 90 40
#> 10 -5645 1535 52 60
加载更多需要的包
library(ggforce) # devtools::install_github("thomasp85/ggforce")
正在执行
ggplot(tbl, aes(x0 = X, y0 = Y, a = Diameter_E_W, b = Diameter_N_S, angle = 0)) +
geom_ellipsis() + geom_point(aes(X, Y), size = .5) + coord_fixed() + theme_bw()