【问题标题】:How to prevent a plot cut off如何防止情节中断
【发布时间】:2018-10-17 05:09:42
【问题描述】:

我想延长我的情节的(右)边距:

我用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()

【问题讨论】:

  • par() 在这里不起作用。尝试在您的 ggplot 代码中添加类似 + expand_limits(y = 900000) 的内容。
  • par 是一个基本的绘图命令。对ggplot没有任何影响
  • @Z.Lin 谢谢你,这行得通!您能否发表您的建议作为答案,以便我接受?

标签: r ggplot2


【解决方案1】:

根据要求发布我的评论作为答案,并对其进行扩展以证明它是一个答案:)

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

ggplot2 的工作方式不同。 ggplot(...) + geom_XXX(...) + scale_XXX(...) + theme(...) 命令创建一个 ggplot object。除了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", ...)。它们是等价的,但前者需要的输入更少。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 2011-08-15
    • 2012-08-05
    • 1970-01-01
    相关资源
    最近更新 更多