0

私が作成したこのチャートの小見出しを左揃えにする方法を知っている人はいますか? 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)

ありがとう

4

1 に答える 1

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)
)
于 2014-08-22T06:54:34.403 に答える