如何在R箱图功能中更改y轴比例

时间:2019-08-22 15:44:34

标签: r scale boxplot

当我使用R boxplot功能绘制箱形图时,该功能会自动打印y轴。

library(datasets)

boxplot(cars[c('speed', 'dist')],
        col = "lightgray")

?boxplot中,我找到了ylim参数,该参数会更改y轴限制,但不会更改比例。因此,我尝试使用axis函数将比例从0到120每10划分一次: axis(4, at = seq(0, 120, 10))。但是我没有得到令人满意的结果。

我看不到我在哪里犯错。有人可以解决这个问题吗?
预先感谢。

boxplot

3 个答案:

答案 0 :(得分:1)

您可以改用ggpubr。让我们将其视为gg对象。

librabry(ggpubr)
library(reshape2)
df <- melt(cars)
p <- ggpubr::ggboxplot(data = df, x = "variable", y = "value", width = 0.8) +
  ggtitle("Plot of car") +
  xlab("my-xalabel") + ylab("my-ylabel")
>p

enter image description here

如果要以对数刻度:

p + ggpubr::yscale("log2", .format = TRUE)

enter image description here

答案 1 :(得分:1)

library(datasets)
boxplot(cars[c('speed', 'dist')], col = "lightgray", ylim = range(0:120), yaxs = "i")
axis(4, at=seq(0, 120, 10))

enter image description here

我相信,y轴在右侧。

答案 2 :(得分:1)

我之所以回答是因为OP在评论中说我的评论起到了作用。我还将在这里解释代码。

要考虑两个技巧:

  1. 通过设置参数y,不包含yaxt = "n"轴的第一个图。
  2. 然后绘制轴号2,标签始终垂直于轴。这是通过las = 2完成的。

最后的代码如下。

library(datasets)

boxplot(cars[c('speed', 'dist')],
        col = "lightgray", yaxt = "n")
axis(2, at = seq(0, 120, 10), las = 2)

enter image description here