gpt4 book ai didi

r - 设置带有刻度的分类轴标签 "free"ggplot2

转载 作者:行者123 更新时间:2023-12-02 14:09:59 24 4
gpt4 key购买 nike

我正在尝试使用 R (3.1.1) 中的 ggplot2 包 (1.0.1) 和 scales="free"在分面图中的分类轴上设置标签。如果我在没有手动设置轴刻度标签的情况下进行绘图,它们会正确显示(第一个图),但是当我尝试设置标签(第二个图)时,两个面上仅使用前 n 个标签(与原始标签不同) .

这是一个可重现的代码片段,说明了该问题:

foo <- data.frame(yVal=factor(letters[1:8]), xVal=factor(rep(1:4,2)), fillVal=rnorm(8), facetVar=rep(1:2,each=4))
## axis labels are correct
p <- ggplot(foo) + geom_tile(aes(x=xVal, y=yVal, fill=fillVal)) + facet_grid(facetVar ~ ., scales='free')
print(p)
## axis labels are not set correctly
p <- p + scale_y_discrete(labels=c('a','a','b','b','c','d','d','d'))
print(p)

我注意到我无法在 data.frame 中正确设置标签,因为它们不是唯一的。我也知道我可以使用arrange.grid来完成此操作,但这需要“手动”对齐图(如果有不同长度的标签等)。此外,我希望在图中包含不可用的方面标签array.grid 解决方案的选项。我还没有尝试过视口(viewport)。也许这就是解决方案,但我希望这个图有更多的多面外观,这似乎更类似于 grid.arrange。

在我看来,这似乎是一个错误,但我愿意接受关于这如何成为“功能”的解释。我也希望可能有一个我还没有想到的简单的解决方案!

最佳答案

最简单的方法是使用正确的转换在数据集中创建另一列。这也将更容易审计和操纵。如果您坚持手动更改:

您不能简单地直接设置标签,因为它会回收(我认为)每个方面的标签向量。相反,您需要使用相应的中断和标签来设置转换:

p <- p + scale_y_discrete(labels = c('1','2','3','4','5','6','7','8'), breaks=c('a','b','c','d','e','f','g','h'))
print(p)

a 的任何 y 轴值现在都将替换为 1b 替换为 2,依此类推。您可以使用标签值来了解我的意思。只需确保您拥有的每个因子值也都在 Breaks 参数中表示即可。

关于r - 设置带有刻度的分类轴标签 "free"ggplot2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30876113/

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