4

我对ggplot比较陌生,所以如果这很容易,我很抱歉,但我在网上找不到任何东西。

我想在 ggplot2 中相邻显示 29 个箱线图(编号 1.1 到 4.0)(我可以这样做),但是一旦我将刻度标签设置为适当的大小(我可以这样做),标签就会重叠,我只想要几个(1.5、2、2.5 等)无论如何。我怎样才能只删除一些刻度标签?另外,无论如何我可以在 1.0 处包含一个空白刻度标记,所以我的刻度标签很好,整数?

我的数据是我“融化”的列表,因为每个箱线图都有不同数量的观察值。

我当前的代码:

list = list(data11, data12, ... data39, data40) # Elipse denotes the rest of the sequence
df = melt(list)

ggplot(df, aes(factor(variable), value)) + 
    geom_boxplot(outlier.size=1.5, colour="black") + 
    xlab("Xlabel") +
    ylab("Ylabel") +
    theme_classic() + 
    theme(
        axis.text.x = element_text(size=12),
        axis.text.y = element_text(size=12),
        axis.title.x = element_text(size=14),
        axis.title.y = element_text(size=14, angle=90),
        axis.line = element_line(size=0.75)
    )
4

1 回答 1

4

这确实不是一个困难的问题。在这里可以很容易地找到关键思想。

基本上,您缺少一行代码。由于您没有分享您的数据样本(为您感到羞耻!看到这个),我生成了一些。这是解决方案:

df.so1 <- runif(10); df.so2 <- runif(10); df.so3 <- runif(10)
list.so = list(df.so1, df.so2, df.so3)
df.so = melt(list.so)

ggplot(df.so, aes(factor(L1), value)) + 
  geom_boxplot(outlier.size=1.5, colour="black") + 
  xlab("Xlabel") + ylab("Ylabel") +
  theme_classic() + 
  theme(
    axis.text.x = element_text(size=12),
    axis.text.y = element_text(size=12),
    axis.title.x = element_text(size=14),
    axis.title.y = element_text(size=14, angle=90),
    axis.line = element_line(size=0.75)
  ) + 
  scale_x_discrete(breaks = c(1,3))

请注意,您可以完全控制轴、刻度、刻度标签等。有关更多信息,请参阅 ggplot2文档

更新。

发帖前别忘了查看相关问题:bump1、 bump2。

于 2013-10-11T11:04:00.117 回答