[英]plot multiple circular angle occurrences using ggplot2 in r
我正在尝试在一张与这些图相似的图中绘制多个角度的圆形图:
这个想法是用一个圆来表示每个扭转角(α,β等)的分布。 该角度出现的次数越高,该圆内的线越暗。
我的输入文件如下所示:
1.00 14.01 171.64 -17.49 168.69 -150.94 10.27 -20.86 145.12 145.05 -7.43 -161.90 -5.87
2.00 18.15 -172.52 -7.12 162.23 164.93 11.60 -1.73 154.66 158.51 -27.71 -174.80 0.62
3.00 4.94 -167.07 -3.86 144.74 -164.88 -2.33 -19.91 145.94 148.27 -5.93 175.08 -12.85
4.00 -15.02 -150.01 -12.18 155.77 -143.32 2.34 -12.78 137.45 142.44 -18.65 165.76 14.60
5.00 -11.59 -154.16 -3.87 145.04 -170.26 11.28 -2.69 152.88 162.17 -28.51 -168.32 -9.84
第一列只是索引号,而2-12列是我要绘制的12个角度的分布。 我的角度值从-180:180开始。 我可以根据需要r轻松更改输入数据。 我是r的新手,并尝试使用ggplot2执行此操作。 我的主要问题是我不确定在这种情况下代表分布数据的最佳方法是什么。 我想到的一种方法是用ylim(c(1,12))制作12个圆,并用最小和最大分布值作为该矩形的坐标的矩形表示每个角度分布(因此第一列(或第一个角度)将用ymin = 1和ymax = 2,xmin = min(第1列)和xmax = max(第1列)等矩形表示):
data = read.table("myinputfile")
ggplot(data, aes(xvar=-180:180,y=data$V2)) +
ylim(c(1,13)) +
geom_rect(aes(ymin=1, ymax=2, xmin=min(data$V2), xmax=max(data$V2))) +
coord_polar()
这样,我只是尝试做一个角度(列)以查看它是否可以工作,但没有成功。 我也尝试使用geom_point
或geom_boxplot
(比geom_rect
更好地表示分布数据),但没有成功。
任何见解,想法,评论都将不胜感激!
一种可能是使用geom_segment
。 首先,你需要melt
你的数据到ggplot
-able长格式。 让角度值代表x
和xend
值。 然后创建y
和yend
值,将不同类型的角度放在单独的圆上。 从以下内容开始:
library(reshape2)
library(ggplot2)
df2 <- melt(df, id.var = "V1")
df2$xend <- df2$value
df2$y <- as.numeric(as.factor(df2$variable))
df2$yend <- df2$y + 1
ggplot(data = df2, aes(x = value, xend = xend, y = y, yend = yend)) +
geom_segment() +
coord_polar() +
scale_x_continuous(breaks = seq(-180, 180, 45)) +
scale_y_continuous(breaks = min(df2$y):max(df2$yend)) +
theme_bw()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.