[英]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.