我有一些时间序列数据,它们表示随着时间的推移许多数据序列的累积总和,基本上是资金流入和流出市场。有些是正面的,有些是负面的,但不同的数据链当然可以总结整个市场的资金流向。我一直在考虑如何使用它来可视化它ggplot
,到目前为止,小倍数似乎是最清晰的方法 - 请参阅下面的图像和代码。
是否有人对使用 R 和(最好)使用此类数据进行惊人的可视化有任何其他建议ggplot
?我尝试过使用geom_area
,但它变得非常混乱,我似乎无法找到一种方法来清楚地显示每个数据系列,即使在使用stack
关键字之后也是如此。
require(ggplot2)
require(scales)
require(gridExtra)
mymelt <- structure(list(mydate = structure(c(15340, 15340, 15340, 15340,
15340, 15340, 15340, 15340, 15340, 15340, 15340, 15340, 15371,
15371, 15371, 15371, 15371, 15371, 15371, 15371, 15371, 15371,
15371, 15371, 15400, 15400, 15400, 15400, 15400, 15400, 15400,
15400, 15400, 15400, 15400, 15400, 15431, 15431, 15431, 15431,
15431, 15431, 15431, 15431, 15431, 15431, 15431, 15431, 15461,
15461, 15461, 15461, 15461, 15461, 15461, 15461, 15461, 15461,
15461, 15461, 15492, 15492, 15492, 15492, 15492, 15492, 15492,
15492, 15492, 15492, 15492, 15492, 15522, 15522, 15522, 15522,
15522, 15522, 15522, 15522, 15522, 15522, 15522, 15522, 15553,
15553, 15553, 15553, 15553, 15553, 15553, 15553, 15553, 15553,
15553, 15553), class = "Date"), variable = c("b", "bc", "f",
"in", "it", "l", "of", "o", "pr", "s", "total", "tr", "b", "bc",
"f", "in", "it", "l", "of", "o", "pr", "s", "total", "tr", "b",
"bc", "f", "in", "it", "l", "of", "o", "pr", "s", "total", "tr",
"b", "bc", "f", "in", "it", "l", "of", "o", "pr", "s", "total",
"tr", "b", "bc", "f", "in", "it", "l", "of", "o", "pr", "s",
"total", "tr", "b", "bc", "f", "in", "it", "l", "of", "o", "pr",
"s", "total", "tr", "b", "bc", "f", "in", "it", "l", "of", "o",
"pr", "s", "total", "tr", "b", "bc", "f", "in", "it", "l", "of",
"o", "pr", "s", "total", "tr"), value = c(-23, 6.90000000000001,
459.799999999999, -403.6, -56.1, -95, -13.8, 32.6, 121.5, -15.7,
26.2000000000007, 12.5, -25.1, 238.3, 1047.2, -803.2, -151.5,
-260.5, -59.6, -93.8, 461.5, -37.7, 26.7999999999993, -288.8,
-46.4, 249, 1289.8, -783.2, -188.1, -414.9, -77.7, -61, 928.4,
-36.8, 17.4000000000015, -841.7, -46.5, 276.2, 1384.8, -541.1,
-71.8999999999999, -433.3, -61.3, -28.3, 494.699999999999, -23.4,
-14.5999999999985, -964.5, -46.1, 376.2, 1020.1, -119.4, 56.8000000000001,
-447.7, -9.50000000000001, 14.2, -9.20000000000164, 2.5, -42.7999999999993,
-880.6, -52.9, 345.5, 892.599999999999, -241.8, 144.3, -428.2,
-3.30000000000001, 91.9, -294.800000000002, -5.19999999999999,
-42.1999999999971, -490.1, -64.5, 379.7, 679.299999999999, -143.1,
185.9, -419.8, -4.30000000000001, 182.4, -421.900000000002, 1.80000000000001,
-59.8999999999978, -435.2, -80.2, 422.2, 645.499999999998, -391.4,
76.6000000000001, -387.4, -1.70000000000001, 211.2, -131.500000000002,
-10.6, -40.8999999999978, -393.6), fill = c("#A4D3EE80", "#A478AB80",
"#01AEF080", "#8DC73F80", "#F8931D80", "#FFAAAA80", "#8C8C8C",
"#D38D5F80", "#23238E80", "#77B9B780", "#C8373780", "#EEDD8280",
"#A4D3EE80", "#A478AB80", "#01AEF080", "#8DC73F80", "#F8931D80",
"#FFAAAA80", "#8C8C8C", "#D38D5F80", "#23238E80", "#77B9B780",
"#C8373780", "#EEDD8280", "#A4D3EE80", "#A478AB80", "#01AEF080",
"#8DC73F80", "#F8931D80", "#FFAAAA80", "#8C8C8C", "#D38D5F80",
"#23238E80", "#77B9B780", "#C8373780", "#EEDD8280", "#A4D3EE80",
"#A478AB80", "#01AEF080", "#8DC73F80", "#F8931D80", "#FFAAAA80",
"#8C8C8C", "#D38D5F80", "#23238E80", "#77B9B780", "#C8373780",
"#EEDD8280", "#A4D3EE80", "#A478AB80", "#01AEF080", "#8DC73F80",
"#F8931D80", "#FFAAAA80", "#8C8C8C", "#D38D5F80", "#23238E80",
"#77B9B780", "#C8373780", "#EEDD8280", "#A4D3EE80", "#A478AB80",
"#01AEF080", "#8DC73F80", "#F8931D80", "#FFAAAA80", "#8C8C8C",
"#D38D5F80", "#23238E80", "#77B9B780", "#C8373780", "#EEDD8280",
"#A4D3EE80", "#A478AB80", "#01AEF080", "#8DC73F80", "#F8931D80",
"#FFAAAA80", "#8C8C8C", "#D38D5F80", "#23238E80", "#77B9B780",
"#C8373780", "#EEDD8280", "#A4D3EE80", "#A478AB80", "#01AEF080",
"#8DC73F80", "#F8931D80", "#FFAAAA80", "#8C8C8C", "#D38D5F80",
"#23238E80", "#77B9B780", "#C8373780", "#EEDD8280")), .Names = c("mydate",
"variable", "value", "fill"), row.names = c(NA, 96L), class = "data.frame")
myvals <- mymelt[mymelt$mydate == mymelt$mydate[nrow(mymelt)],] ## last date in mymelt should always be same as plotenddate as we subset earlier
mymelt <- within(mymelt, variable <- factor(variable, as.character(myvals[order(myvals$value, decreasing = T),]$variable), ordered = TRUE))
p <- ggplot(mymelt, aes(x = mydate, y = value)) +
geom_area(aes(fill = variable), position = "stack") +
facet_wrap(~ variable, ncol = 4) +
theme(axis.text.x = element_text(size = 8, angle = 90, colour = "grey50")) +
theme()
print(p)