5

以下のコードを使用して、単純なボックス プロットを生成していますggplot2

# Libs data
data("mtcars"); require(ggplot2); require(ggthemes)
# Chart
ggplot(data = mtcars) +
  geom_boxplot(aes(y = wt, x = as.factor(am)),
               fill = "gray87") +
  xlab("AM") +
  ylab("WT") +
  theme_gdocs() +
  ggtitle("WT by AM") +
  theme(axis.title.y = element_text(angle = 90),
        axis.ticks = element_line(colour = "black", linetype = "solid",
                                  size = 0.5),
        panel.grid = element_line(colour = "gray"))

生成されたチャートはかなり単純です。 最初のチャート

仕事

チャートにサブタイトルを追加して、レンダリング方法を制御したいと考えています。私はこの議論に従っており、コードを使用しています:

# Chart
ggplot(data = mtcars) +
  geom_boxplot(aes(y = wt, x = as.factor(am)),
               fill = "gray87") +
  xlab("AM") +
  ylab("WT") +
  theme_gdocs() +
  ggtitle(expression(atop("WT by AM", 
                          atop(italic("Some crucial note that has to be here"), "")))) +
  theme(axis.title.y = element_text(angle = 90),
        axis.ticks = element_line(colour = "black", linetype = "solid",
                                  size = 0.5),
        panel.grid = element_line(colour = "gray"))

次のチャートを取得します。 二度目の試み


これは非常に見栄えが悪いので、いくつか変更したいと思います。

  1. サブタイトルとタイトルを左寄せにする
  2. 2 つの行の間の空白を減らす
  3. フォントを太字にする

試み

たとえば、以下のコードのように、さまざまなことを試しました。

ggplot(data = mtcars) +
  geom_boxplot(aes(y = wt, x = as.factor(am)),
               fill = "gray87") +
  xlab("AM") +
  ylab("WT") +
  theme_gdocs() +
  ggtitle(expression(atop("WT by AM", 
                          atop(italic("Stupid note"), "")))) +
  theme(axis.title.y = element_text(angle = 90),
        axis.ticks = element_line(colour = "black", linetype = "solid",
                                  size = 0.5),
        panel.grid = element_line(colour = "gray"),
        plot.title = element_text(size = 16, colour = "black", hjust = -1))

しかし、それはタイトルを完全に隠します:

タイトルがありません

4

3 に答える 3

3

「ばかげているが機能する」ファイルから、中央の右側にスペースを追加して、強制的に左揃えにすることができます。スペースの適切な数は数学を使用して決定できましたが、文字列変数を に戻す方法がわかりませんでしたatop

# Chart
ggplot(data = mtcars) +
  geom_boxplot(aes(y = wt, x = as.factor(am)), fill = "gray87") +
  xlab("AM") + ylab("WT") + theme_gdocs() +
  ggtitle(expression(atop("WT by AM                            ", 
                          atop(italic("Some crucial note that has to be here"), "")))) +
  theme(axis.title.y = element_text(angle = 90),
        axis.ticks = element_line(colour = "black", linetype = "solid", size = 0.5),
        panel.grid = element_line(colour = "gray"))

ここに画像の説明を入力

于 2015-12-04T14:28:41.617 に答える
1

「式」コマンドを使用する必要がありますか?私はこれをggplot2で行っていましたが、両方ともplotmathを使用しているため、これはggplotで機能すると思います。

bquote と top を使用して、文字列の違いの長さに基づいてスペースを追加できます。bquote の貼り付けで .() を介して、環境から物事を調達できます。

bquote(atop(
       paste("WT by AM", .(paste0(replicate(nchar("Some Crucial Note that Has to Be Here") - nchar("WT by AM"), " "), collapse = ""), 
       paste("Some Crucial Note that Has to Be Here")
            ) 
       )

スペースのさまざまなサイズ (フォント サイズによる) の調整については、レプリケートの長さの式に数値を掛けるだけです (分数を取得する場合は、床または天井を使用します)。

編集: ただし、文字 " " と "a" はプロットすると長さが異なるため、文字列の長さの違いとしてスペースの数を使用しても完全ではありません。

于 2018-02-09T22:57:15.760 に答える