如何防止情节中断

时间:2018-05-07 11:45:29

标签: r ggplot2

我想扩展我的情节的(右)边缘:

Cluster

我用par(omi=c(10,10,5,20))(任意值)尝试了它,但它不起作用。

par(oma=c(10,10,5,20))
ggplot(df, aes(Cluster, Number_of_observations)) + 
  geom_bar(position = 'dodge', stat='identity', colour="Darkblue", fill = "skyblue") +
  geom_text(aes(label=Number_of_observations), position=position_dodge(width=0.9), 
            hjust = -0.25, vjust=-0.25) +
  coord_flip() +
  theme_bw()

1 个答案:

答案 0 :(得分:1)

根据要求将评论作为答案发布,&扩展它以证明它是一个答案:)

正如@RichardTelford所指出的,par使用基本绘图命令,因为它为图形设备设置参数。每个后续的与绘图相关的命令都会对设备进行一些更改。例如,points在指定的坐标处绘制点,text添加文本字符串等。事情是按顺序完成的。较早的命令(例如par)会影响以后的命令,但反之亦然。

ggplot2的工作方式不同。 ggplot(...) + geom_XXX(...) + scale_XXX(...) + theme(...)命令会创建ggplot 对象。除ggplot(...)之外,它初始化对象&必须首先,其他部分的顺序可以切换到对结果没有实际影响(虽然保持一些顺序会使您的代码更容易阅读)。这意味着要影响通过ggplot2创建的绘图的任何部分的外观,您必须在的命令中进行更改,而不是使用par

在您的情况下,以下内容可行:

ggplot(df, aes(Cluster, Number_of_observations)) + 
  geom_col(position = 'dodge', colour = "Darkblue", fill = "skyblue") +
  geom_text(aes(label = Number_of_observations), position = position_dodge(width = 0.9), 
            hjust = -0.25, vjust = -0.25) + 
  expand_limits(y = 900000) + # or some other arbitrarily large number
  coord_flip() +
  theme_bw()

我还建议使用geom_col(...)代替geom_bar(stat = "identity", ...)。它们是等价的,但前者需要较少的输入。