以日期为 X 轴、以发生为 X 轴的折线图

以日期为 X 轴、以发生为 X 轴的折线图

我正在尝试生成一条折线图,显示给定时间段内对我的服务器的访问请求的数量。

日志数据如下:

  • 2013 年 10 月 5 日
  • 2013 年 10 月 5 日
  • 2013 年 10 月 5 日
  • 2013 年 11 月 5 日
  • 2013 年 11 月 5 日
  • 2013 年 5 月 14 日
  • 2013 年 5 月 14 日

Sp 图表将显示 14/05/13,电子表格中有 2 行。

我如何用折线图来表示这一点。

“D”列保存了我所有的日期。

谢谢

答案1

嗯,您可以用这些数据进行数据透视,或者插入一列来记录每个日期出现的次数。

数据透视表

  1. 确保有一个列名,然后在字段 D 上创建一个数据透视表(转到“插入”>“数据透视表”> 选择数据,然后单击“确定”)。
  2. 将字段拖入“行标签”和“值”中。 在此处输入图片描述在此处输入图片描述

  3. 然后您可以从数据透视表本身插入折线图。

添加新列

在包含公式的日期右侧添加一列(我假设 D1 包含列名并且数据从单元格 D2 开始):

=COUNTIF(D:D,D2)

为该列命名(例如,访问请求数),并根据两列插入折线图。

答案2

如果需要定期更新这些数据,则可以使用由表格提供的数据透视表。

  1. 将数据转换为表格(插入>表格)。每当您添加数据时,它都会更新。此外,如果您的数据来自 ODBC 兼容源(例如 SQL Server),您可以让它自动使用当前数据进行更新。
  2. 在表格中添加一列,名为 Count。然后输入公式=1。这将自动为表格中的每个值填充 1。
  3. 使用您的表作为数据源来创建数据透视表(插入>数据透视表)。
  4. 像这样格式化你的数据透视表(它将类似于 Jerry 的数据透视表):
    • 行标签 = 日期
    • 值 = 计数
  5. 突出显示数据透视表后,创建一个折线图(插入>折线)。这将创建一个数据透视图,该数据透视图将自动随数据透视表更新。

完成此设置后,每次向主数据表添加值时,都可以刷新数据透视表,并且相关的数据透视图也会更新。

答案3

我认为你需要的是阶梯线图根据您的描述。要绘制这种图表,我建议您使用免费的 Funfun Excel 插件,它允许您直接在 Excel 中使用 JavaScript 代码。使用 JavaScript 可以轻松绘制阶梯线图。这是我根据您的示例数据绘制的示例。

在此处输入图片描述

基本上,Funfun Excel 插件可让您使用 JavaScript 来处理您存储在电子表格中的数据。话虽如此,您可以使用 HighCharts.js 或 D3.js 等库来绘制图表。在此示例中,我使用了 HighCharts.js。对于您的示例数据,并非每天都有登录次数。如果您没有为没有日志的日期提供数据(0 次登录),您的行将无法正确显示。我在这里所做的是创建一个包含该月所有日期的数组,每个日期将有默认的 0 次登录。然后根据电子表格中的日志,我将它们的日期与预先创建的数组进行比较,并将登录添加到数组中。以下是一些代码。

var dayFirst,
      monthFirst,
      dayLast,
      monthLast;

  dayFirst = parseInt(data[1].split('/')[0]);
  monthFirst = parseInt(data[1].split('/')[1]) - 1;
  dayLast  = parseInt(data[data.length-1].split('/')[0]);
  monthLast = parseInt(data[data.length-1].split('/')[1]) - 1;

  for(var i=monthFirst;i<=monthLast;i++ ){
    for(var j=dayFirst;j<=dayLast;j++){
        logins.push(
            [Date.UTC(2017, i, j),0]
        );
    }
  }

  for(var i=1;i<data.length;i++){
    var dateThis = data[i];
    var year = parseInt(dateThis.split('/')[2]);
    var month = parseInt(dateThis.split('/')[1]-1);
    var day = parseInt(dateThis.split('/')[0]);

        for(var j =0;j<logins.length;j++){
            if(logins[j][0]==Date.UTC(year, month, day)){
                logins[j][1] += 1;
            }
        }    
  }

Funfun 还有一个在线编辑器,您可以在其中探索 JavaScript 代码和结果。您可以在下面的链接中查看我如何制作示例图表的详细信息。

https://www.funfun.io/1/#/edit/5a4e571b1010eb73fe125cd9

一旦您对在线编辑器中的结果感到满意,您就可以使用上面的 URL 轻松地将结果加载到 Excel 中。但当然,首先,您需要通过以下方式将 Funfun 插件添加到 Excel 中:插入 - Office 加载项。下面是一些屏幕截图,展示如何将示例加载到 Excel 中。

在此处输入图片描述

在此处输入图片描述

披露:我是 Funfun 的开发人员

相关内容