Php 每日流行的公式?

Php 每日流行的公式?,php,mysql,statistics,popularity,Php,Mysql,Statistics,Popularity,我有一个基本上是日历的应用程序,用户可以输入每天的活动。现在我必须找到最好的方式来显示一个月的日历,同时突出最忙的日子 很明显,颜色是这里的选择,但我想知道你们会怎么做。我头脑风暴了以下几点: 获取一天的max事件数,然后将其除以可用颜色数。因此,如果一天有30个事件,我们有3种颜色,第一种是从0到9,第二种是从10到19,最后一种是从20开始 找到平均值并将其除以颜色/2,因此,如果平均值为10个事件,我们有3种颜色,则数学值为10/1.5=6.66,这意味着第一个颜色范围为0到6.66,第

我有一个基本上是日历的应用程序,用户可以输入每天的活动。现在我必须找到最好的方式来显示一个月的日历,同时突出最忙的日子

很明显,颜色是这里的选择,但我想知道你们会怎么做。我头脑风暴了以下几点:

  • 获取一天的
    max
    事件数,然后将其除以可用颜色数。因此,如果一天有30个事件,我们有3种颜色,第一种是从0到9,第二种是从10到19,最后一种是从20开始
  • 找到
    平均值
    并将其除以
    颜色/2
    ,因此,如果平均值为10个事件,我们有3种颜色,则数学值为10/1.5=6.66,这意味着第一个颜色范围为0到6.66,第二个颜色范围为6.67到13.32,最后一个颜色范围为13.33
然而,我不确定这是否是解决这个问题的最好办法。两者都是线性的,第一个可能会把事情搞得一团糟,如果我们的平均值是20左右,最多有100个事件,只有两种颜色会出现

我不是静态学家,但我认为这个问题可以用百分位数和四分位数来解决,但我真的不确定如何实现它

谢谢。

一些想法:

  • 确保颜色均匀分布:每天安排N个事件,并为每种颜色分配相等的天数
  • 将N个事件/天映射为连续颜色范围内的值,而不是使用离散的桶。例如,从0到最大(事件)到RGB值
  • 找到一个非线性分布-例如,正态分布、指数分布等。您要寻找的公式是CDF(请参阅),可用于将每天事件数转换为百分位数

  • 我建议使用一种对数分布算法,该算法通常用于构建标记云。标签是您的天数,标签计数是一天中的事件数

    PHP和Python的良好实现(尚未正确检查)似乎是。下面是一个例子:

    $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>';
    }
    
    $tags=数组(
    数组('tag'=>1,
    “计数”=>10),
    数组('tag'=>2,
    “计数”=>30),
    数组('tag'=>3,
    “计数”=>5),
    数组('tag'=>4,
    “计数”=>5);
    $COLORS=数组('绿色'、'黄色'、'红色');
    foreach(标记云($tags,0,count($colors)-1,0)作为$d){
    回显'Day:'.$d['tag'.'事件:'.$d['count'.'';
    }
    
    正是我想要的!谢谢