gpt4 book ai didi

r - 在 ggplot2 中使用 coord_flip() 和 facet_wrap(scales = "free_y") 似乎会给出意外的面轴刻度线和刻度标签

转载 作者:行者123 更新时间:2023-12-02 18:04:51 24 4
gpt4 key购买 nike

我正在尝试创建一个具有翻转坐标的多面图,其中一个且仅一个轴允许针对每个面而变化:

require(ggplot2)
p <- qplot(displ, hwy, data = mpg)
p + facet_wrap(~ cyl, scales = "free_y") + coord_flip()

enter image description here

这个图对我来说并不令人满意,因为每个图都重复了错误的刻度线和刻度标签。我希望每个水平轴上都有刻度线,而不是每个垂直轴上的刻度线。

这是意外的行为,因为该图暗示顶部面板的水平轴刻度线与底部面板的水平轴刻度线相同,但事实并非如此。要查看此运行:

p <- qplot(displ, hwy, data = mpg)
p + facet_wrap(~ cyl, scales = "fixed") + coord_flip()

所以我的问题是:有没有办法删除右侧面的垂直轴刻度线并在顶部面添加水平轴刻度线和标签?

正如 Paul 在下面深刻指出的那样,我给出的示例可以通过在 qplot() 中交换 x 和 y 并避免使用 coord_flip() 来解决,但这并不适用于所有几何图形,例如,如果我想要一个水平多面条我可以运行带有自由水平轴的绘图:

c <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()
c + facet_wrap(~cut, scales = "free_y") + coord_flip()

image

这些面具有可变的水平轴,但具有重复的垂直轴刻度线,而不是重复的水平轴刻度线。我认为保罗的技巧在这里不起作用,因为与散点图不同,条形图不是旋转对称的。

我非常有兴趣听到任何部分或完整的解决方案。

最佳答案

coord_flipfacet_wrap结合使用就是问题所在。首先,将某个轴定义为自由轴(x 轴),然后交换该轴,使 y 轴自由。目前,这在 ggplot2 中还没有很好地重现。

在您的第一个示例中,我建议不要使用coord_flip,而只是在对qplot的调用中交换变量,并使用free_x >:

p <- qplot(hwy, displ, data = mpg)
p + facet_wrap(~ cyl, scales = "free_x")

enter image description here

关于r - 在 ggplot2 中使用 coord_flip() 和 facet_wrap(scales = "free_y") 似乎会给出意外的面轴刻度线和刻度标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12560858/

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