我有以下数据集:
active <- structure(list(new_df = structure(c(1L, 12L, 23L, 26L, 27L, 28L,
29L, 30L, 31L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 13L,
14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 24L, 25L), .Label = c("1",
"10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "2",
"20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "3",
"30", "31", "4", "5", "6", "7", "8", "9"), class = "factor"),
Date = structure(c(1422662400, 1425081600, 1427760000, 1430352000,
1433030400, 1435622400, 1438300800, 1440979200, 1443571200,
1446249600, 1448841600, 1451520000, 1454198400, 1456617600,
1459382400, 1461974400, 1464652800, 1467244800, 1469923200,
1472601600, 1475193600, 1477872000, 1480464000, 1483142400,
1485820800, 1488240000, 1490918400, 1493510400, 1496188800,
1498780800, 1501459200), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
value = c(65139, 66615, 66669, 67081, 67277, 67366, 67831,
65226, 64967, 64999, 65182, 65695, 68071, 68689, 68860, 69581,
69566, 68585, 67644, 67846, 67799, 67999, 68125, 68934, 68668,
68671, 68583, 68608, 68728, 69417, 69814), month = c(1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L,
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L,
6L, 7L), months = c("јануари", "февруари", "март", "април",
"мај", "јуни", "јули", "август", "септември", "октомври",
"ноември", "декември", "јануари", "февруари", "март", "април",
"мај", "јуни", "јули", "август", "септември", "октомври",
"ноември", "декември", "јануари", "февруари", "март", "април",
"мај", "јуни", "јули"), year = c(2015L, 2015L, 2015L, 2015L,
2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2016L,
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
2016L, 2016L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L
), year2 = c("15", "15", "15", "15", "15", "15", "15", "15",
"15", "15", "15", "15", "16", "16", "16", "16", "16", "16",
"16", "16", "16", "16", "16", "16", "17", "17", "17", "17",
"17", "17", "17"), year_month = structure(1:31, .Label = c("1/15",
"2/15", "3/15", "4/15", "5/15", "6/15", "7/15", "8/15", "9/15",
"10/15", "11/15", "12/15", "1/16", "2/16", "3/16", "4/16",
"5/16", "6/16", "7/16", "8/16", "9/16", "10/16", "11/16",
"12/16", "1/17", "2/17", "3/17", "4/17", "5/17", "6/17",
"7/17"), class = "factor"), Period = c("јануари/2015", "февруари/2015",
"март/2015", "април/2015", "мај/2015", "јуни/2015", "јули/2015",
"август/2015", "септември/2015", "октомври/2015", "ноември/2015",
"декември/2015", "јануари/2016", "февруари/2016", "март/2016",
"април/2016", "мај/2016", "јуни/2016", "јули/2016", "август/2016",
"септември/2016", "октомври/2016", "ноември/2016", "декември/2016",
"јануари/2017", "февруари/2017", "март/2017", "април/2017",
"мај/2017", "јуни/2017", "јули/2017")), .Names = c("new_df",
"Date", "value", "month", "months", "year", "year2", "year_month",
"Period"), row.names = c(NA, -31L), class = "data.frame")
使用下面的代码,我正在绘制点/线图的简单组合。
library(ggplot2)
p <- ggplot(active) +
geom_point(aes(as.factor(new_df), value, text = Period), size = 2, color="green") +
geom_line(aes(as.factor(new_df), value, group = 1, alpha = 0.5), color = "deepskyblue4", group = 1) +
theme_minimal()+
xlab("") +
ylab("") +
theme(axis.text.x=element_blank())
library(plotly)
ggplotly(p)
如果我想通过facet_wrap调用区分时间序列,那么情节看起来是恰当的。
那是我的问题发生的时候。如果我添加facet_wrap( ~ year, ncol=3)
,那么基本上按年份面对时间序列,而不是从一个面板到下一个面板的连续流程,线条会变形。
有什么线索?
答案 0 :(得分:2)
您的facet具有相同的x轴,包含所有x值范围。添加参数scales = "free_x"
以使每个方面具有不同的x轴范围。
+ facet_wrap( ~ year, ncol=3, scales = "free_x")
答案 1 :(得分:1)
以下是您的解决方案:
library(gtools)
data$new_df <- with(data, factor(new_df, levels = gtools::mixedsort(unique(as.character(new_df)))))
ggplot(data) +
geom_point(aes(new_df, value, text = Period), size = 2, color="green") +
geom_line(aes(new_df, value, group = 1, alpha = 0.5), color = "deepskyblue4", group = 1) +
theme_minimal()+ facet_wrap( ~ year, ncol=3, scales = "free_x") +
xlab("") +
ylab("") + theme(axis.text.x=element_blank())
使用facet_wrap()
后, 您的new_df列未正确排序,因此我首先正确订购并随后在ggplot()
中使用。另外scales = "free_x"
中facet_wrap
是必须使用的,因为每个方面都没有x轴值(只是流量)