在一个交流讨论群里看到有人讨论这个图,很早之前就看到过这个图,当时记得有一个现成的R包可以做。如果让自己使用ggplot2来实现当时还真没有思路。
现在有一些思路,这个就是点 和 线段 的组合,把握好坐标位置就好了
但是这个图里的线段是带有弧度的,之前画图的线段都是直线,所以就查了一下ggplot2
画带有弧度的线段的办法,找到了参考资料
Line segments and curves — geom_segment • ggplot2 (tidyverse.org)
没有弧度的线段使用的是geom_segment()
函数
有弧度可以使用geom_curve()
函数
下面是一个小例子
library(ggplot2)
b <- ggplot(mtcars, aes(wt, mpg)) +
geom_point()
df <- data.frame(x1 = 2.62, x2 = 3.57, y1 = 21.0, y2 = 15.0)
b +
geom_curve(aes(x = x1, y = y1, xend = x2, yend = y2, colour = "curve"), data = df) +
geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2, colour = "segment"), data = df)
这里有一个参数可以控制弧度curvature
library(ggplot2)
b <- ggplot(mtcars, aes(wt, mpg)) +
geom_point()
df <- data.frame(x1 = 2.62, x2 = 3.57, y1 = 21.0, y2 = 15.0)
b +
geom_curve(aes(x = x1,
y = y1,
xend = x2,
yend = y2,
colour = "curve"),
curvature = 1,
data = df) +
geom_segment(aes(x = x1,
y = y1,
xend = x2,
yend = y2,
colour = "segment"),
data = df) -> b1
b +
geom_curve(aes(x = x1,
y = y1,
xend = x2,
yend = y2,
colour = "curve"),
curvature = -1,
data = df) +
geom_segment(aes(x = x1,
y = y1,
xend = x2,
yend = y2,
colour = "segment"),
data = df) -> b2
library(patchwork)
b1/b2
取值范围是-1到1,正负数代表的是弧度的方向
好了今天的内容暂时先到这里了
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!