gpt4 book ai didi

r - 如何用线条创建玫瑰图

转载 作者:行者123 更新时间:2023-12-01 13:41:26 25 4
gpt4 key购买 nike

我正在尝试创建一个染色体数据的玫瑰图,如下所示

    structure(list(chr = c(11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 
16, 16, 18, 2, 2, 20, 20, 3, 4, 4), leftPos = c(17640000, 2880000,
29040000, 19680000, 6120000, 6480000, 14880000, 16200000, 17760000,
13560000, 21240000, 7080000, 10440000, 16800000, 49080000, 12240000,
8280000, 13320000, 12000000, 13560000), Means.x = c(218.523821652113,
256.117545073851, 343.541494875886, 348.237645885147, 426.983644179467,
228.568161732039, 283.269605668063, 440.686146437743, 218.674798674891,
264.556139561699, 232.068688576066, 226.877793789348, 224.282711224934,
215.935347248385, 253.472008896076, 230.683794652539, 305.788038763088,
285.805349707436, 644.897029710454, 485.630136931446), Def.x = c(1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Means.y = c(236.188586172547,
345.958953367193, 250.194040077771, 304.25175004754, 336.629006416052,
221.495167672412, 231.719055660279, 231.252826188427, 334.254524914754,
271.392526335334, 236.848569235568, 261.62635228236, 246.090793604293,
370.773978424351, 242.493276055677, 245.097715487835, 280.225103337613,
370.736474095631, 1014.42590543955, 236.718929160423), Def.y = c(1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), .Names = c("chr",
"leftPos", "Means.x", "Def.x", "Means.y", "Def.y"), row.names = c(NA,
20L), class = "data.frame")

起初我对自己很满意,因为我能得到这些情节

enter image description here

使用此代码:

ggplot(ZoutliersM)+
geom_point(aes(x = ZoutliersM$leftPos/1000000,y = as.numeric(ZoutliersM$Def.x)),stat="identity",fill="magenta",size=2,colour="red")+
geom_bar(aes(x = ZoutliersM$leftPos/1000000,y = as.numeric(ZoutliersM$Def.x)),stat="identity",fill="purple",size=1,colour="red")+
ylim(0, 1)+
ggtitle("Shared")+
#geom_hline(aes(yintercept=0))+
coord_polar(theta = "x", start = 0)+
facet_wrap(~ chr)

但是我在使用 geom_bar 时遇到问题,因为我经常收到错误

position_stack requires constant width: output may be incorrect

我认为输出不正确,因为它没有绘制所有点。

所以我花了很长时间寻找答案,但实际上并没有得到太多。我认为这是一个与 geom_bar 认为条形宽度大小不同并且不喜欢这样的事实有关的错误。我试过更改为 stat='bin' 但我不想要频率图,我只想从点到 x 轴有一条线。

所以问题是我怎样才能做到这一点,同时避免 geom_bar。例如,是否有一种方法可以为每个点绘制 vline 到 y=0 点?

编辑

然后我试了一下

ggplot(ZoutliersM)+
geom_point(aes(x = ZoutliersM$leftPos/1000000,y = as.numeric(ZoutliersM$Def.x)),stat="identity",fill="magenta",size=2,colour="red")+
geom_vline(xintercept = ZoutliersM$leftPos/1000000, linetype= 1, colour = "#919191")+
ylim(0, 1)+
ggtitle("Shared")+
#geom_hline(aes(yintercept=0))+
coord_polar(theta = "x", start = 0)+
facet_wrap(~ chr)

我得到了这个:

enter image description here

但现在所有的 vlines 都绘制在一张图上,然后按染色体复制。所以还没有工作

最佳答案

试试 geom_segment(),它允许您使用两个坐标来指定线段:(x,y)(xend,yend)(x,y) 坐标与您的点相同,而 (xend,yend) 坐标表示线段的另一端。在这种情况下,因为我们希望线从点延伸到 x 轴,所以 xend 应该与 xyend 相同应为 0。我已将所有 aes() 变量合并为一个,但与 geom_segment() 无关的其他所有内容我都保持不变:

ggplot(ZoutliersM,aes(x = ZoutliersM$leftPos/1000000,y = as.numeric(ZoutliersM$Def.x),
xend=ZoutliersM$leftPos/1000000,yend=0))+
geom_point(stat="identity",fill="magenta",size=2,colour="red")+
geom_segment(linetype= 1, colour = "#919191")+
ylim(0, 1)+
ggtitle("Shared")+
coord_polar(theta = "x", start = 0)+
facet_wrap(~ chr)

enter image description here

关于r - 如何用线条创建玫瑰图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33734643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com