我有一个基本上是日历的应用程序,用户可以输入每天的事件。现在我必须找到最好的方式来显示整个月的日历,同时突出最忙碌的日子。
显然颜色是这里的选择,但我想知道你们会怎么做。我已经集思广益了以下内容:
max
个活动一天,然后将其除以可用颜色的数量。因此,如果有一天有30个事件,我们有3种颜色,第一个将是0到9,以下是10到19,最后一个是20。average
并将其除以colors/2
,所以如果平均值为10个事件且我们有3种颜色,则数学将为10 / 1.5 = 6.66,这意味着第一个颜色范围将是从0到6.66,第二个从6.67到13.32,最后一个从13.33开始。但是,我不确定这是解决这个问题的最佳方法。两者都是线性的,如果我们的平均值大约为20且最大值有100个事件,则第一个可能会使事情变得非常混乱,只会出现两种颜色。
我不是静态的,但我认为这个问题可以通过百分位数和四分位数来解决,但我不确定如何实现它。
感谢。
答案 0 :(得分:1)
我建议使用一种用于构建标签云的logarthmic分布算法。标签是你的日子,标签的数量是一天的事件数量。
PHP和Python的良好实现(尚未正确检查)似乎是this one。这是一个例子:
$tags = array(
array('tag' => 1,
'count' => 10),
array('tag' => 2,
'count' => 30),
array('tag' => 3,
'count' => 5),
array('tag' => 4,
'count' => 5));
$colours = array('green', 'yellow', 'red');
foreach(tagcloud($tags, 0, count($colours) - 1, 0) as $d) {
echo '<div style="background-color:' . $colours[floor($d['size'])] . '">Day: '.$d['tag'].' Events: '.$d['count'].'</div>';
}
答案 1 :(得分:0)
一些想法: