good code R plotR语言初学

R语言ggplot2画带有弧度的线段简单小例子

2021-07-01  本文已影响0人  小明的数据分析笔记本
image.png

在一个交流讨论群里看到有人讨论这个图,很早之前就看到过这个图,当时记得有一个现成的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)
image.png

这里有一个参数可以控制弧度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
image.png

取值范围是-1到1,正负数代表的是弧度的方向

好了今天的内容暂时先到这里了

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

上一篇下一篇

猜你喜欢

热点阅读