【发布时间】:2011-05-25 06:57:44
【问题描述】:
我需要一个辅助方法来为图表添加轴标签。我不想在图表中具有值的轴的每个点上添加标签,因为那样会太忙。所以我需要定期提取样本。到目前为止,我已经提出了以下满足要求的方法,但我认为必须有一种更简洁的方法来使用 Linq 完成此操作。谁能想到如何使这更简洁(n 代表我想要返回的样本总数)?
public static List<T> Sample<T>(this List<T> list, int n)
{
var samples = new List<T>();
var divisor = list.Count/n;
for (var i = 0; i < list.Count; i++)
if (samples.Count == i/divisor)
samples.Add(list[i]);
return samples;
}
【问题讨论】:
-
你确定采样会给一个不错的轴吗?我会寻找 Min 和 Max 并使用 log10 算术建立一个比例。大多数图表工具都会这样做。
-
@Henk Holterman,看过输出后,我倾向于同意你的看法。
-
采样是解决此问题的错误方法。我会留下这个问题,因为也许有一天有人会需要一个采样器来做其他事情,但最后,我确实使用了上面的建议。你可以在这里看到结果:stackoverflow.com/questions/25458/…