迁移数据的玫瑰图
Rose diagram for migration data
我正在尝试创建一个玫瑰图,显示每个细胞子集的平均轨迹角度和距离。我希望玫瑰图周围的角度是轨迹角度,图中的条形长度是总位移。
这里是每组平均角度和位移的测试数据集
testsum<-data.frame(Group=c(1,2,3),
angle=c(0.78,1.04,2.094),
displacement=c(1.5,2,1))
当我尝试用圆形方法绘制时,我的图表看起来很不对。
p1<-ggplot(testsum, aes(x=angle,y=displacement))+
coord_polar(theta="x",start=0)+
geom_bar(stat="identity",aes(color=Group,fill=Group),width=.01)+
scale_x_continuous(breaks=seq(0,360,60))
它给了我这个输出图。
根据数据所说,它看起来应该更像这样(预期输出图)。
角度好像放错了?知道我做错了什么吗?
也许你可以使用open air package中的windRose功能
library(openair)
testsum<-data.frame(Group=c(1,2,3),angle=c(0.78,1.04,2.094),displacement=c(1.5,2,1))
testsum$angle=180*testsum$angle/pi
windRose(testsum,ws="displacement",wd="angle",breaks=c(0.5,1,1.5,2),paddle=F,key.header = "My Rose",angle=10,
statistic="prop.mean",key.footer = "Displacement")
也许你可以试试这个:
testsum$angle_b=180*testsum$angle/pi
#
ggplot(testsum, aes(x=angle_b,y=displacement))+
geom_bar(stat="identity",aes(color=Group,fill=Group),width=1) +
scale_x_continuous(breaks=seq(0,360,10), limits=c(0,360)) + coord_polar(direction=1)
虽然 MLavoie "beat me" 20 分钟,但我认为可以通过使用 NISTunits
包来增加一些可读性:
library(ggplot2)
library(NISTunits)
testsum <- data.frame(
Group = c(1, 2, 3),
angle = c(0.78, 1.04, 2.094),
displacement = c(1.5, 2, 1)
)
testsum$angle = NISTradianTOdeg(testsum$angle)
ggplot(testsum, aes(x = angle, y = displacement)) +
coord_polar(theta = "x", start = NISTdegTOradian(-90), direction = 1) +
geom_bar(stat = "identity",
aes(color = Group, fill = Group),
width = 1) +
scale_x_continuous(breaks = seq(0, 360, 10), limits = c(0, 360))
结果:
夹住下半部分检查this answer.
我正在尝试创建一个玫瑰图,显示每个细胞子集的平均轨迹角度和距离。我希望玫瑰图周围的角度是轨迹角度,图中的条形长度是总位移。
这里是每组平均角度和位移的测试数据集
testsum<-data.frame(Group=c(1,2,3),
angle=c(0.78,1.04,2.094),
displacement=c(1.5,2,1))
当我尝试用圆形方法绘制时,我的图表看起来很不对。
p1<-ggplot(testsum, aes(x=angle,y=displacement))+
coord_polar(theta="x",start=0)+
geom_bar(stat="identity",aes(color=Group,fill=Group),width=.01)+
scale_x_continuous(breaks=seq(0,360,60))
它给了我这个输出图。
根据数据所说,它看起来应该更像这样(预期输出图)。
角度好像放错了?知道我做错了什么吗?
也许你可以使用open air package中的windRose功能
library(openair)
testsum<-data.frame(Group=c(1,2,3),angle=c(0.78,1.04,2.094),displacement=c(1.5,2,1))
testsum$angle=180*testsum$angle/pi
windRose(testsum,ws="displacement",wd="angle",breaks=c(0.5,1,1.5,2),paddle=F,key.header = "My Rose",angle=10,
statistic="prop.mean",key.footer = "Displacement")
也许你可以试试这个:
testsum$angle_b=180*testsum$angle/pi
#
ggplot(testsum, aes(x=angle_b,y=displacement))+
geom_bar(stat="identity",aes(color=Group,fill=Group),width=1) +
scale_x_continuous(breaks=seq(0,360,10), limits=c(0,360)) + coord_polar(direction=1)
虽然 MLavoie "beat me" 20 分钟,但我认为可以通过使用 NISTunits
包来增加一些可读性:
library(ggplot2)
library(NISTunits)
testsum <- data.frame(
Group = c(1, 2, 3),
angle = c(0.78, 1.04, 2.094),
displacement = c(1.5, 2, 1)
)
testsum$angle = NISTradianTOdeg(testsum$angle)
ggplot(testsum, aes(x = angle, y = displacement)) +
coord_polar(theta = "x", start = NISTdegTOradian(-90), direction = 1) +
geom_bar(stat = "identity",
aes(color = Group, fill = Group),
width = 1) +
scale_x_continuous(breaks = seq(0, 360, 10), limits = c(0, 360))
结果:
夹住下半部分检查this answer.