我想扩展我的情节的(右)边缘:
我用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()
答案 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", ...)
。它们是等价的,但前者需要较少的输入。