4

ggplot を使用して、カテゴリ ラベル付きの横棒グラフを作成しようとしています。

手間をかけずにプロットを作成でき、ラベルを付けることができましたが、フォーマットに問題がありました。最終的には、ラベルが収まる場合はバー内に、それ以外の場合はラベルを切り捨てずにバーのすぐ外側にラベルを付けたいと考えています。

以下は、これまでに試したことです。

データ

dt1 <- data.table(x=c("a","b","c","d","e"), y=c(43,52,296,102,157), y2=c(50,10,100,45,80))

チャート 1

ggplot() + geom_bar(data=dt1, aes(x=x, y=y), stat="identity",fill="red") + coord_flip() +
  geom_text(data=dt1, aes(x=x, y=y, label=paste0("$",y," from ",y2," records")),hjust=0)

以下に示すように、ラベルは切り捨てられます。 チャート 1

チャート 2

次に、この質問に出くわしました。これは役に立ち、y 変数に基づいてラベルの位置を設定していることに気付きました。今はそれをハードコーディングし、hjust を使用して軸からパディングしました。

ggplot() + geom_bar(data=dt1, aes(x=x, y=y), stat="identity",fill="red") + coord_flip() +
  geom_text(data=dt1, aes(x=x, y=0, label=paste0("$",y," from ",y2," records")),hjust=-0.1)

しかし、以下に示すように、2 つのラベルしかバーに収まらないことがわかります。そのため、他のラベルは、グラフ 1 のようにバーの外側の最後に配置することをお勧めします。 チャート2

チャート 1 とチャート 2 の両方の長所を活かすプログラム的な方法はありますか?

4

3 に答える 3

0

プログラマティックを「プラグマティック」と読み違えるつもりです。「+ scale_y_continuous(limits=c(0,max(dt1$y)+100))」を追加すると、ラベルに十分なスペースが作成されました。プロットをアップロードする評判がありません。

ggplot() + geom_bar(data=dt1, aes(x=x, y=y), stat="identity",fill="red") + coord_flip() + geom_text(data=dt1, aes(x=x, y=y, label=paste0("$",y," from ",y2," records")),hjust=0) + scale_y_continuous(limits=c(0,max(dt1$y)+100))

編集 2; 最大値を取得して 100 を加算するようにコードを変更しました。テキストを具体的に含めることはまだプロットに適合していませんが、固定ラベルで機能します。

于 2014-11-10T23:38:29.050 に答える