只是想知道是否有人对我遇到的问题有任何想法。
我有大量数据需要显示在一个图表上。两条粗体和实线的理论线显示在顶部,然后绘制出收敛到这些线的 10 个实验数据集,每个数据集使用不同的标识符(例如 + 或 o 或正方形等)。这些图表的对数比例最高可达 1e6。图的前几十年(< 1e3)看起来不错,但随着所有数据集的收敛(> 1e3),很难看出什么数据是什么。
每十年有超过 1000 个数据点,我可以在一定程度上线性修剪,但如果我这样做太多,图表的下端将受到分辨率的影响。
我想做的是对数修剪,在高端最强,回到0。我的问题是:我怎样才能得到一个对数缩放的索引向量而不是线性的?
我最初的假设是,由于我的数据是线性的,我可以只使用线性索引来修剪,这会导致这样的事情(但对于所有几十年):
//%grab indicies per decade
ind12 = find(y >= 1e1 & y <= 1e2);
indlow = find(y < 1e2);
indhigh = find(y > 1e4);
ind23 = find(y >+ 1e2 & y <= 1e3);
ind34 = find(y >+ 1e3 & y <= 1e4);
//%We want ind12 indexes in this decade, find spacing
tot23 = round(length(ind23)/length(ind12));
tot34 = round(length(ind34)/length(ind12));
//%grab ones to keep
ind23keep = ind23(1):tot23:ind23(end);
ind34keep = ind34(1):tot34:ind34(end);
indnew = [indlow' ind23keep ind34keep indhigh'];
loglog(x(indnew), y(indnew));
但这显然会导致李子表现得神经质。每个十年都有我想要的点数,但由于它是一个线性分布,这些点往往在对数尺度上十年的高端聚集。
关于如何做到这一点的任何想法?