1

このデータ フレームを x 軸に月でプロットしたいと思います。

month  value1  value2  value3  value4
1   Okt 19.5505 19.6145 19.5925 19.3710
2   Nov 21.8750 21.7815 21.7995 20.5445
3   Dez 25.4335 25.2230 25.2800 22.7500

t = read.csv("Mappe1.csv", header = TRUE, sep=";", dec = ".", fill = TRUE, comment.char = "")

t$m <- factor(t$m, levels = c("Okt", "Nov", "Dez"))

library(Hmisc)

xyplot(t$value1~t$m, type = "l", col = "red", ylab="values")
lines(t$value2~t$m, type = "l", col = "cyan")
lines(t$value3~t$m, type = "l", col = "purple")
lines(t$value4~t$m, type = "l", col = "black", lwd = 2)
legend("topleft", legend=c("value1", "value2", "value3", "value4"),
   col=c("red", "cyan", "purple", "black"), lty=1:1, cex=0.8)

この例では非常にうまくいきました。しかし、まったく同じ方法で異なる値を使用して試してみると、value1 のみが plottet であり、常に次のエラーが発生します。

Error in plot.xy(xy.coords(x, y), type = type, ...) : 
  plot.new has not been called yet
Error in strwidth(legend, units = "user", cex = cex, font = text.font) : 
  plot.new has not been called yet

私はすでに plot.new() と dev.off() を適用しました。しかし、それでもこれらのエラーが発生することもあれば、R でエラーが表示されずにまったくプロットされないこともあります。

ここで何が問題になる可能性がありますか?

ご協力いただきありがとうございます。

4

1 に答える 1

0

ggplot2 の方法を使用する場合は、データを長い形式に変換し、 を使用してプロットする方法を次に示しますggplot2

t <- read.table(text = "month  value1  value2  value3  value4
1   Okt 19.5505 19.6145 19.5925 19.3710
2   Nov 21.8750 21.7815 21.7995 20.5445
3   Dez 25.4335 25.2230 25.2800 22.7500", header = TRUE)

t$month <- factor(t$m, levels = c("Okt", "Nov", "Dez"))

library(tidyr)

# "melt" the data into a long format
# -month tells the function to "melt" everything but month
xy <- gather(t, key = variable, value = value, -month)

library(ggplot2)

# for some reason you need to specify group and color to make things work
ggplot(xy, aes(x = month, y = value, group = variable, color = variable)) +
  theme_bw() +
  geom_line()

ここに画像の説明を入力

于 2016-11-07T08:29:43.217 に答える