3

時間の経過に伴う多数のデータ系列の累積合計を表す時系列データがいくつかあります。基本的には、市場に出入りするお金です。肯定的なものもあれば否定的なものもありますが、当然のことながら、データのさまざまな要素を合計すると、市場全体のマネー フローが計算されます。これを使用してこれを視覚化する方法について熟考してきましたが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)
4

1 に答える 1

4

通常、すべての時系列が共通の x 軸を持つように、パネルを水平に積み重ねることをお勧めします。scalesただし、 @ GavinSimpson が提案したように変更したくない場合、それは機能しません。この場合、パネルを隣り合わせに配置する方がよいでしょうが、不要なデータ インクを削除します( Tufte, 2001を参照)。

通常、凡例は必要ありません。これは、パネル名が既に変数の名前を示しているためです。これにより、虹色の必要性もなくなります。また、使用を避け、代わりにgeom_area使用しgeom_lineます-プロットを重い幾何学的領域で埋め尽くすことなく、効果が際立ちます。その後、細かな詳細があります。マイナー グリッドを削除してグリッド密度を下げ、軸のテキスト サイズを変更し、 の幅を減らしますgeom_line。テーマをtheme_bwに変更して、灰色のがらくたをすべて削除します。最後に、この特定のケースでは、プロットの高さが幅の 50% 程度になると役立ちます。このソリューションの唯一の問題は、x 軸の日付ラベルが非常に小さいことです。

p <- ggplot(mymelt, aes(x = mydate, y = value)) +
  geom_line(lwd=0.3) +
  facet_grid(. ~ variable) +
  theme_bw() +
  theme(axis.text.x = element_text(size = 5, angle = 90),
        axis.text.y = element_text(size = 8),
        axis.title.x = element_text(vjust = 0),
        axis.ticks = element_blank(), 
        panel.grid.minor = element_blank())
print(p)
ggsave(plot=p, filename="plot.png", width = 8, height = 4)   

ここに画像の説明を入力

于 2012-09-27T13:39:34.493 に答える