【发布时间】:2009-12-26 08:54:20
【问题描述】:
我遇到过很多情况,我想绘制的点比我真正应该的要多——主要的问题是当我与人们分享我的情节或将它们嵌入到论文中时,它们占据了太多的空间。在数据框中随机采样行非常简单。
如果我想要一个点图的真正随机样本,这很容易说:
ggplot(x,y,data=myDf[sample(1:nrow(myDf),1000),])
但是,我想知道是否有更有效的(最好是固定的)方法来指定绘图点的数量,以便您的实际数据准确地反映在绘图中。所以这里有一个例子。 假设我正在绘制类似重尾分布的 CCDF,例如
ccdf <- function(myList,density=FALSE)
{
# generates the CCDF of a list or vector
freqs = table(myList)
X = rev(as.numeric(names(freqs)))
Y =cumsum(rev(as.list(freqs)));
data.frame(x=X,count=Y)
}
qplot(x,count,data=ccdf(rlnorm(10000,3,2.4)),log='xy')
这将产生一个 x 和 y 轴变得越来越密集的图。在这里,为较大的 x 或 y 值绘制更少的样本是理想的。
有人对处理类似问题有任何提示或建议吗?
谢谢, -e
【问题讨论】:
-
你好 Rob,Dirk - 我想澄清一下,我不是在寻找一种方法来使用不同的可视化方法来处理过度绘图。我特别想做一个点图,我可以将它作为可缩放矢量图形嵌入到 LaTeX 论文中。我想这样做的方法是减少传达我的数据所需的绘图点的数量。
-
那么子抽样可能是您最好的选择。这当然可以通过“非均匀”采样来完成,因此您可能希望从尾部保留更多点(甚至全部),但可以负担得起大幅减薄主要部分。但这似乎是针对特定问题的,因此您可能必须自己动手。