Вы можете решить проблему, добавив group = 1
в эстетику, однако результат будет неэстетичным, так как японские символы юникода за месяцы преобразуются в factor
типы.
Другой подход заключается в использовании непрерывной шкалы при рисовании линий с числами в течение месяцев от 1 до 12, а затем добавлении меток и разрывов вручную - scale_x_continuous(breaks = 1:12, labels = month_label)
.
Пожалуйста, смотрите код ниже:
aqi <- structure(list(num = 1:12, month = structure(c(1L, 5L, 6L, 7L,
8L, 9L, 10L, 11L, 12L, 2L, 3L, 4L), .Label = c("1<U+6708>", "10<U+6708>",
"11<U+6708>", "12<U+6708>", "2<U+6708>", "3<U+6708>", "4<U+6708>",
"5<U+6708>", "6<U+6708>", "7<U+6708>", "8<U+6708>", "9<U+6708>"
), class = "factor"), PM10 = c(24L, 45L, 40L, 51L, 36L, 33L,
26L, 28L, 32L, 35L, 24L, 21L), PM2.5 = c(10L, 20L, 20L, 20L,
16L, 13L, 11L, 13L, 15L, 15L, 12L, 11L), NO = c(2.59, 2.14, 2.97,
2.16, 1.91, 1.89, 1.87, 2, 1.45, 1.26, 1.66, 2.06), NO2 = c(8.61,
9.94, 10.94, 11.27, 10.3, 8.85, 6.43, 9.4, 7.01, 7.77, 7.65,
8.22)), row.names = c(NA, -12L), class = "data.frame")
aqi$num <- NULL
library(ggplot2)
library(reshape2)
month_label <- aqi$month
aqi$month <- 1:nrow(aqi)
plot.data <- melt(aqi, id.vars= "month")
ggplot(plot.data) +
geom_line(mapping = aes(x = month, y = value , colour = variable)) +
labs (x = "month", y = "value", title = "AIR") +
scale_x_continuous(breaks = 1:12, labels = month_label)
Выход: