4

プロットの適切な水平バーのに軸テキストを配置したいと思います。ggplot2以下は私が得た限りであり、その後にプロットコードがあります。データはこの質問の一番下にあります。

私の質問は、常に存在する「どのコードが目標をよりよく達成するか」は別として、(1)長方形とテキストの場所を手動で入力する代わりに、Rがそれらをアルゴリズム的に配置する方法、(2)Rがテキストを移動する方法です左端の長方形(テキストの文字数に基づいて中間点を計算してみましたが、うまくいきません)?

ここに画像の説明を入力

プロットのために、苦労する代わりにシーケンス変数を作成しましたas.numeric(as.character(risks)

ggplot(plotpg19, aes(x = sequence, y = scores)) +
  geom_bar(stat = "identity", width = 0.4) +
  coord_flip() +
  labs(x = "", y = "") +
  theme_bw() +
  theme(axis.text.y = element_blank(), axis.ticks.y = element_blank()) +
  geom_rect(data=plotpg19, aes(xmin= seq(1.5, 8.5, 1), 
                               xmax= seq(1.8, 8.8, 1), ymin=0, ymax=30), fill = "white") +
  geom_text(data=plotpg19, aes(x=seq(1.6, 8.6, 1), y= nchar(as.character(risks))/2, label=risks, size = 5, show_guide = FALSE)) +
  guides(size = FALSE)

以下はデータです。

plotpg19 <- structure(list(risks = structure(c(8L, 7L, 6L, 5L, 4L, 3L, 2L, 
1L), .Label = c("Other", "Third parties/associates acting on our behalf", 
"Rogue employees", "Lack of understanding by top executives", 
"Lack of anti-bribery/corruption training or awareness within the business", 
"Geographic locations in which the company operates", "Industries/sector(s) in which the company operates", 
"Inadequate resources for anti-bribery/corruption compliance activities"
), class = "factor"), scores = c(15, 28, 71, 16, 5, 48, 55, 2
), sequence = 1:8), .Names = c("risks", "scores", "sequence"), class = "data.frame", row.names = c(NA, 
-8L))

この質問は私にいくつかの指針を与えてくれました。geom_rect 内の geom_text のフィッティング

4

1 に答える 1

4

あなたが白をプロットしている理由がわかりませんgeom_rect。2 番目の質問でy=0は、aesof の設定geom_textと追加hjust=0(正確に y でテキストを開始) が機能します。x パラメータを調整して、テキストがバーの途中にプロットされるようにしました。

library(dplyr)
plotpg19 <- mutate(plotpg19, xtext = sequence + 0.55)

library(ggplot2)
ggplot(plotpg19, aes(x = sequence, y = scores)) +
  geom_bar(stat = "identity", width = 0.4) +
  coord_flip() +
  labs(x = "", y = "") +
  theme_bw() +
  theme(axis.text.y = element_blank(), axis.ticks.y = element_blank()) +
  geom_text(data = plotpg19,
            aes(x = xtext, y = 0, label = risks, size = 5, show_guide = FALSE),
            hjust = 0, vjust = 1) +
  guides(size = FALSE)

ここに画像の説明を入力

于 2015-07-20T14:25:25.427 に答える