任何人都知道如何在我制作的图表中左对齐子标题?与我使用的任何方法都没有结合,除了使用ggplot。
library(ggplot2)
library(ggthemes)
library(grid)
# Random exponential sample
set.seed(10)
n=20
y<-rexp(n=n)
y<-y[order(y)]
x<-seq(n)+1990
mydata<-data.frame(cbind(x,y))
# Plot
p <- (ggplot(mydata, aes(x=x, y=y))
+ geom_point(size=3,alpha=.50)
+ geom_smooth(method="lm",formula=y~poly(x,2,raw=T),se=F,size=1)
+ theme_economist(base_size=12, base_family="Avenir")
+ labs(title=expression(atop(bold("Inequality Is Increasing"), atop("Gini Coefficient", ""))))
+ labs(x="")
+ labs(y="")
+ annotate("text", label = "Source:World Bank Data", x = 2009, y = Inf, vjust = 61, size=4)
)
# Overide clipping
gt <- ggplot_gtable(ggplot_build(p))
gt$layout$clip[gt$layout$name == "panel"] <- "off"
grid.draw(gt)
由于
答案 0 :(得分:0)
我对你的代码进行了相当多的实验。当你想要一个副标题时,你的原始代码很有效。但是你牺牲的是左对齐。如果您想要左对齐,可以执行ggtitle("Inequality Is Increasing\nGini Coefficient")
之类的操作。但是,例如,你牺牲了字体标准。这是一种权衡。我能想到的唯一解决方案是将字幕与主标题分开。我宁愿将微妙的文字视为文本。因此,我使用了注释。我使用x和y值来识别字幕的最佳位置。这纯粹是实验性的,乏味的。但是,我认为这是我能为您提供的最佳服务。我希望这能满足你的要求。
# Plot
p <- (ggplot(mydata, aes(x=x, y=y))
+ geom_point(size=3,alpha=.50)
+ geom_smooth(method="lm",formula=y~poly(x,2,raw=T),se=F,size=1)
+ theme_economist(base_size=12, base_family="Avenir")
+ ggtitle("Inequality Is Increasing")
+ annotate("text", x = 1992.25, y = 3.2, label = "Gini Coefficient", fontface = 3)
+ labs(x="")
+ labs(y="")
+ annotate("text", label = "Source:World Bank Data", x = 2009, y = Inf, vjust = 61, size=4)
)