我有一個數據集,其中包含對連續四天(大約340'000個數據點)每秒的觀察結果。這太多了,無法在散點圖中顯示。我想只繪製2000個時間點的統一樣本。繪製時間序列的樣本
有沒有可能通過ggplot2
的「圖形語法」方法實現這一點?我還沒有找到任何內置的「採樣」修改器,但也許寫起來很容易?
library(ggplot2)
x <- 1:100000
d <- data.frame(x=x, y=rnorm(length(x)))
ggplot(d[sample(x, 2000), ], aes(x=x, y=y)) + geom_point()
這是如何通過修改傳遞給ggplot的數據來「破解」它的。但我不想修改數據,只是將其過濾爲僅包含樣本。
ggplot(d, aes(x=x, y=y)) + ??? + geom_point()
編輯:我專門找採樣,不平滑或裝箱。我所擁有的數據顯示了模擬特定過程一秒鐘所需的時間。仿真已並行化,並且對於每個模擬的秒數,我都有涉及的每個內核的運行時間(共8個)。我想通過繪製原始數據點來顯示次優負載平衡。抽樣的原因只是對於散點圖而言,300,000個數據點太多了:繪圖需要很長時間,可視化效果不佳。
您必須在某個時間點對您的數據進行採樣AFAIK和您發佈的解決方案似乎很有效。與ggplot實現的任何額外的geom/transformation數據相比,這種方法會更快,佔用更少的內存。 – Chase
我不會通過繪製數據*黑客*的子集來繪製數據的子集。 – mnel
@mnel:我知道。這違背了ggplot2語法的美妙之處。數據進入ggplot未修改,期間。其他的都是可視化的。 – krlmlr