LoginSignup
0
1

【R】グラフの目盛りを任意の文字に変える

Posted at

はじめに

plot関数を使って折れ線グラフで日ごとの平均気温の変化を表現しようとした時に、「X軸を"4/1"のような形式の日付、Y軸を平均気温」に指定すると以下のようなエラーが発生します。

 plot.window(...) でエラー:  有限な 'xlim' の値が必要です 
 追加情報:  警告メッセージ: 
1:  xy.coords(x, y, xlabel, ylabel, log) : 
   強制変換により NA が生成されました 
2:  min(x) :   min の引数に有限な値がありません: Inf を返します 
3:  max(x) :   max の引数に有限な値がありません: -Inf を返します 

X軸に1,2,3,...という連番形式で日付を入れるとどうにかグラフが出来上がりますが、これだと何日の気温なのかが分かりづらいです。
そこでグラフの目盛りを任意の文字(※ここでは日付)に変える方法を記事としてまとめてみました。

line_graph_001.png

解決方法

解決の糸口

  • 上記のように、X軸として「4/1」などの日付を指定するとそもそもグラフを描画できないため、「まずX軸にダミーの値(※ここでは連番)を指定してグラフを描画して、後から目盛りを任意の文字に変える」という方法を探してみました。

実際のコード

  • 実際のコードは以下のように、「最初にX軸の目盛りを消した散布図を作り、後からX軸の目盛りを付け足す」という方法になりました。
    • 「最初にX軸の目盛りを消した散布図を作る」際には、X軸にダミーの値(※ここでは連番)となるdf$noを指定して描画しています。
    • X軸の目盛りを消す時はxaxt="n"、Y軸の目盛りを消す時はyaxt="n"を指定します。
# 連番、日付、平均気温のデータフレーム
df <- data.frame(
no = c(1,2,3,4,5,6,7,8,9,10),
date = c("4/1","4/2","4/3","4/4","4/5","4/6","4/7","4/8","4/9","4/10"),
temp = c(14.6,14.2,13.9,15.4,11.4,12.7,17.0,18.8,15.6,11.7)
)

# X軸の目盛りを消した散布図を作る。
plot(df$temp~df$no,
  xlab="", ylab="Mean Temperature", 
  cex=1,
  cex.lab  = 0.8,
  cex.axis = 0.8,
  xlim=c(0.5, 10.5), xaxp=c(0,10,10),  # X軸の範囲を指定する
  type="b",  # 折れ線グラフ
  xaxt="n")  # X軸を消す

# 後からX軸の目盛りを付け足す。
axis(side = 1,
  at = seq(1, 10, by=1), # X軸の目盛りの刻みを指定する
  cex.lab  = 0.8,
  cex.axis = 0.8,
  labels=df$date)
  • 出来上がった折れ線グラフは以下の通りです。
    • ちょっと味気ないグラフですが、記事の冒頭のグラフと比べて日付が明確になっています。

line_graph_002.png

参考URL

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1