[解決済み] 行末のラベルをプロットする
2022-12-22 11:10:40
質問
以下のようなデータがあります (
temp.dat
全データはエンドノート参照)
Year State Capex
1 2003 VIC 5.356415
2 2004 VIC 5.765232
3 2005 VIC 5.247276
4 2006 VIC 5.579882
5 2007 VIC 5.142464
...
とすると、以下のようなグラフができます。
ggplot(temp.dat) +
geom_line(aes(x = Year, y = Capex, group = State, colour = State))
<イグ
凡例の代わりに、ラベルを
- シリーズと同じ色
- 各シリーズの最後のデータポイントの右側にある
以下のリンクの回答でbaptisteのコメントに気づきましたが、彼のコードに合わせようとすると(
geom_text(aes(label = State, colour = State, x = Inf, y = Capex), hjust = -1)
を適用しようとすると、テキストが表示されません。
temp.dat <- structure(list(Year = c("2003", "2004", "2005", "2006", "2007",
"2008", "2009", "2010", "2011", "2012", "2013", "2014", "2003",
"2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011",
"2012", "2013", "2014", "2003", "2004", "2005", "2006", "2007",
"2008", "2009", "2010", "2011", "2012", "2013", "2014", "2003",
"2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011",
"2012", "2013", "2014"), State = structure(c(1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("VIC",
"NSW", "QLD", "WA"), class = "factor"), Capex = c(5.35641472365348,
5.76523240652641, 5.24727577535625, 5.57988239709746, 5.14246402568366,
4.96786288162828, 5.493190785287, 6.08500616799372, 6.5092228474591,
7.03813541623157, 8.34736513875897, 9.04992300432169, 7.15830329914056,
7.21247045701994, 7.81373928617117, 7.76610217197542, 7.9744994967006,
7.93734452080786, 8.29289899132255, 7.85222269563982, 8.12683746325074,
8.61903784301649, 9.7904327253813, 9.75021175267288, 8.2950673974226,
6.6272705639724, 6.50170524635367, 6.15609626379471, 6.43799637295979,
6.9869551384028, 8.36305663640294, 8.31382617231745, 8.65409824343971,
9.70529678167458, 11.3102788081848, 11.8696420977237, 6.77937303542605,
5.51242844820827, 5.35789621712839, 4.38699327451101, 4.4925792218211,
4.29934654081527, 4.54639175257732, 4.70040615159951, 5.04056109514957,
5.49921208937735, 5.96590909090909, 6.18700407463007)), class = "data.frame", row.names = c(NA,
-48L), .Names = c("Year", "State", "Capex"))
どのように解決するのですか?
Baptisteのアイデアを使用するには、クリッピングをオフにする必要があります。しかし、そうすると、ゴミが出ます。さらに、凡例を抑制する必要があり、そのために
geom_text
には、2014年の設備投資を選択し、ラベルのためのスペースを確保するためにマージンを増加させる必要があります。(または
hjust
パラメータを調整して、ラベルをプロットパネルの中に移動することもできます)。このような感じです。
library(ggplot2)
library(grid)
p = ggplot(temp.dat) +
geom_line(aes(x = Year, y = Capex, group = State, colour = State)) +
geom_text(data = subset(temp.dat, Year == "2014"), aes(label = State, colour = State, x = Inf, y = Capex), hjust = -.1) +
scale_colour_discrete(guide = 'none') +
theme(plot.margin = unit(c(1,3,1,1), "lines"))
# Code to turn off clipping
gt <- ggplotGrob(p)
gt$layout$clip[gt$layout$name == "panel"] <- "off"
grid.draw(gt)
<イグ
しかし、このようなプロットは、まさに
directlabels
.
library(ggplot2)
library(directlabels)
ggplot(temp.dat, aes(x = Year, y = Capex, group = State, colour = State)) +
geom_line() +
scale_colour_discrete(guide = 'none') +
scale_x_discrete(expand=c(0, 1)) +
geom_dl(aes(label = State), method = list(dl.combine("first.points", "last.points")), cex = 0.8)
<イグ
編集 終点とラベルの間のスペースを大きくするため。
ggplot(temp.dat, aes(x = Year, y = Capex, group = State, colour = State)) +
geom_line() +
scale_colour_discrete(guide = 'none') +
scale_x_discrete(expand=c(0, 1)) +
geom_dl(aes(label = State), method = list(dl.trans(x = x + 0.2), "last.points", cex = 0.8)) +
geom_dl(aes(label = State), method = list(dl.trans(x = x - 0.2), "first.points", cex = 0.8))
関連
-
R: エラー: $ 演算子は原子ベクトルに対して無効です。
-
R LanguageError in hist.default() : 'x' は数値でなければなりません.
-
[解決済み] Matplotlib で凡例をプロットの外側に配置する方法
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
-
[解決済み] Rで2つのグラフを同じプロットで表示する
-
[解決済み] リストをデータフレームに変換する
-
[解決済み] コマンドラインからRスクリプトを実行する
-
[解決済み] なぜ `[`] は `subset` よりも優れているのですか?
-
[解決済み] data.frameの1つの列の名前を変更する方法は?
-
[解決済み】Rスクリプトで警告をグローバルに抑制する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
R LanguageError in hist.default() : 'x' は数値でなければなりません.
-
R言語 - マトリックス
-
R言語ダウンロード機能 download.fileとダウンロード解析
-
[解決済み] lm.fit(x,y,offset = offset, singular.ok,...) 0 非NAケースでboxcox式で計算するとエラーになる。
-
[解決済み] Rの%*%の意味 [重複]について
-
[解決済み] Rでcは何をするのですか?重複] [重複
-
[解決済み] R dataframeでNAの値をゼロに置き換えるには?
-
[解決済み] 統計的最頻値の求め方は?
-
[解決済み] データフレーム内のランダムな行をサンプリングする
-
[解決済み] データフレームのカラムのデータ型を決定する