谷歌可视化将 0 轴与两个不同的 y 轴对齐

2024-04-28

我正在创建一个组合图 https://developers.google.com/chart/interactive/docs/gallery/combochart与谷歌的可视化库。我正在绘制商店一天内的客流量和收入图表。我已将抽奖选项设置为

var options = {
  seriesType: "bars",
  series:{0:{targetAxisIndex:0},1:{targetAxisIndex:1}},
  vAxes:{0:{title: "Revenue"},1:{title: "Traffic"}},
  hAxis: {title: "Time", showTextEvery: 1},
};

它将收入设置在与​​流量不同的 Y 轴上。数据示例可能如下所示:

var data = [
  //   Time       Revenue Traffic
  ['10:00-10:30', '132.57', '33'],
  ['10:30-11:00', '249.23', '42'],
  ['11:00-11:30', '376.84', '37'],
  [... etc ..]
];

我遇到的问题是,流量值始终为正数,而如果有回报,收入可能为负数。如果发生这种情况,我的收入轴将从负值(例如 -50)开始,而流量从 0 开始,并且水平基线不对齐。我希望这样即使 Revenue 的值小于 0,它的 0 轴也会与 Traffic 0 轴对齐。

Here's an example to show what's happening. See how the Traffic 0 axis is on the same level as the Revenue's -50 axis. I would like to know how to raise the Traffic baseline to the same level as the Revenue 0 axis. enter image description here


我有一个方法,我相当确定它总是会产生具有相同 0 点的轴值(我还没有证明它can't产生具有不同 0 点的轴,但我还没有遇到过)。

首先,获取两个日期系列的范围(出于我们的目的,第 1 列是“收入”,第 2 列是“流量”):

var range1 = data.getColumnRange(1);
var range2 = data.getColumnRange(2);

对于每个系列,获取该系列的最大值,如果最大值小于或等于 0,则获取 1。这些值将用作图表的上限。

var maxValue1 = (range1.max <= 0) ? 1 : range1.max;
var maxValue2 = (range2.max <= 0) ? 1 : range2.max;

然后计算与两个上限相关的标量值:

var scalar = maxValue2 / maxValue1;

现在,通过取以下值的较低者来计算“收入”系列的下限range1.min and 0:

var minValue1 = Math.min(range1.min, 0);

然后将该下限乘以标量值即可得到“流量”系列的下限:

var minValue2 = minValue1 * scalar;

最后,设置每个轴的 vAxis minValue/maxValue 选项:

vAxes: {
    0: {
        maxValue: maxValue1,
        minValue: minValue1,
        title: 'Revenue'
    },
    1: {
        maxValue: maxValue2,
        minValue: minValue2,
        title: 'Traffic'
    }
}

最终结果是每个序列的正负比例相等(maxValue1 / (maxValue1 - minValue1 == maxValue2 / (maxValue2 - minValue2 and minValue1 / (maxValue1 - minValue1 == minValue2 / (maxValue2 - minValue2),这意味着图表轴should最终得到相同的正负比例,将两边的 0 对齐。

这是一个 jsfiddle 的工作原理:http://jsfiddle.net/asgallant/hvJUC/ http://jsfiddle.net/asgallant/hvJUC/。只要第二个数据系列没有负值,它就应该适用于任何数据集。我正在开发一个适用于任何数据集的版本,但这应该足以满足您的用例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谷歌可视化将 0 轴与两个不同的 y 轴对齐 的相关文章

  • 由于 apollo-client 未定义,无法解构 GraphQL 查询?

    我正在寻找调试与错误消息相关的问题 未捕获的类型错误 无法解构 0 apollo client WEBPACK IMPORTED MODULE 4 useQuery 因为它未定义 Context 我正在为我的 React js 项目设置后端
  • 使用 jquery 远程图像属性

    目前我正在尝试获取远程图像宽度 高度 我正在开发一个链接共享模块 就像当你在 Facebook 上粘贴链接时 你可以看到标题 描述和图像 所以我尝试使用 php getimagesize 来获取图像宽度 高度 但速度非常慢 所以我正在考虑使
  • Javascript 函数查找数字的倍数

    创建一个名为的函数multiplesOf 它将接受两个参数 第一个参数是数字数组 第二个参数是数字 该函数应返回一个新数组 该数组由参数数组中的每个数字组成 该数字是参数数字的倍数 So multiplesOf 5 6 7 8 9 10 3
  • 在 contenteditable div 中选择范围

    我有一个contenteditablediv 和其中的一些段落 这是我的代码 div style border solid 1px black width 300px height 300px div Hello world div div
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 如何修改每个JSON对象javascript

    我想修改里面的每个 JSON 值cooldown object cooldown user 1 This user2 0 This 在 Javascript 中使用 for 语句 我研究了好几个小时 只找到了内部的 blocks Edit
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • 使用 dc.js 按条形值对条形图中的条形进行排序(排序)

    如何通过维度的计算值而不是维度本身的名称对 dc js 示例中的 x 轴 维度 进行排序 例如 请考虑序数条形图的 dc js 示例 https github com dc js dc js blob master web examples
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • Angular - CSS - 自定义类型=文件输入,如何使用按钮而不是标签?

    我制作了一个类型为 file 的自定义输入字段 因为我不喜欢默认的输入字段 为了实现这一目标 我做了
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 日期出现奇怪的错误,“未捕获非法访问”

    所以我试图找到最新的DateJavascript 可以处理 我把它减少到 9 月 275760 并增加了我开始捕获未捕获的天数illegal access例外new Date 09 24 275760 to new Date 10 13 2
  • 对于只触及我的工作表的 Google 表格脚本,收到“此应用程序未经验证”

    我正在编写一个 Google Sheets 脚本 我只想访问与 gs 文件关联的同一电子表格中的数据 似乎我应该有权在自己的电子表格中运行脚本 但是每当我运行一个函数时 我都会得到一个This app isn t verified信息 我该
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • 在 CKEditor 中设置字体大小和字体系列

    我正在使用 ckeditor 我想问一下这个插件如何设置font family和font size 我尝试过使用 CKEDITOR config font defaultLabel Arial CKEDITOR config fontSiz
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • 以编程方式输入文本时 TextInput 未按预期工作

    以下代码在 iOS iPhone 6 中无法正常工作 当我按 Push Me 时 单词没有完全显示 光标也没有显示 经过进一步调查 我发现 onChangeText 和 onContentSize 更改没有被触发 按 Push Me 按钮后
  • 路由器出口的 Angular 2 输出

    我想从在路由器出口内呈现的子组件进行导航 我的父组件有一个路由器配置 我想在某些事件上手动导航 但我不知道如何在没有输出的情况下从子级向父级传递一些数据 用于导航 因为这个结构不起作用
  • 浮点数和字符串转换的奇怪行为

    我已将其输入到 python shell 中 gt gt gt 0 1 0 1 0 010000000000000002 我预计 0 1 0 1 不是 0 01 因为我知道以 10 为底的 0 1 在以 2 为底的情况下是周期性的 gt g
  • 如何舍入仅在 pandas 中显示的值,同时保留数据框中的原始值?

    当我使用 head 或 tail 时 我希望仅对 DataFrame 中的值进行舍入以用于显示目的 但我希望 DataFrame 保留原始值 我尝试使用 round 方法 但它改变了原始 DataFrame 中的值 我不希望每次都为此目的创
  • 如何在Python中动态创建类的类方法[重复]

    这个问题在这里已经有答案了 如果我将一个小 python 程序定义为 class a def func self return asdf Not sure what to resplace init with so that a func
  • 休眠!实体

    这一页 http docs jboss org hibernate orm 4 1 manual en US html single inheritance tableperconcreate polymorphism建议 实体 如果您想避
  • 如何让 div 调整其高度以适应容器?

    如何让导航 div 向下展开或使其高度与其父 div 相同 border 0 padding 0 margin 0 container margin left auto margin right auto border 1px solid
  • Java:从文件中读取整数到数组中

    File fil new File Tall txt FileReader inputFil new FileReader fil BufferedReader in new BufferedReader inputFil int tall
  • 根据是否满足条件对绘图区域进行着色

    我正在使用创建线图ggplot and geom line 随着时间的推移而发展的价值观走廊 有时可能会发生上限低于下限 我将其称为 反转 并且我想突出显示在我的图中发生这种情况的区域 例如使用不同的背景颜色 搜索 Google 和 Sta
  • 在 asp.net 中执行回发操作后刷新页面

    我在我的 asp net 网格中添加了命令按钮 使用该按钮执行操作后 我们刷新网格以反映新数据 基本上此操作会复制网格行 Now when user refresh the page using F5 an alert message is
  • Python - 将长/整数值与 == 进行比较并且是[重复]

    这个问题在这里已经有答案了 可能的重复 Python is 运算符对整数的行为异常 https stackoverflow com questions 306313 python is operator behaves unexpected
  • For-Of 循环与 For 循环

    这两者是相同的还是可以互换的 在哪些用例中 人们会选择其中一种而不是另一种 for let i of array some code for let i 0 i lt array length i some code EXAMPLE 完成该
  • Android:如何检查ScrollView内的View是否可见?

    我有一个ScrollView其中持有一系列Views 我希望能够确定视图当前是否可见 如果它的任何部分当前由ScrollView 我希望下面的代码可以做到这一点 令人惊讶的是它没有 Rect bounds new Rect view get
  • Javascript 在执行数组“推送”时为数组 Key 命名

    我有 3 组单选按钮 每组包含多个单选按钮 在使用时data toggle buttons 在 bootstrap3 中 对于每一组 我可以确保每组仅选择一个答案 到目前为止一切都很好 下面的函数在单击事件上触发并返回所选项目的值 我的问题
  • 如何自动生成已实现接口的方法

    PhpStorm 中是否有一种方法可以自动生成给定类正在实现的接口所需的空方法 假设我们有一个包含 3 个方法的接口 当定义实现该接口的新类时 一些选项可以为所有必需的方法自动生成容器 你当然可以 有 3 种方法可以做到这一点 Press
  • 错误 401 - 浏览器中的 Spring Boot 执行器登录名/密码

    我将 Spring Boot 与执行器一起使用 并添加安全配置 management port 8088 management address 127 0 0 1 management security enabled true secur
  • Listview Onclick Listener 更新 Cardview 布局后不工作

    我已经更新了布局 用按钮替换了 ImageViews 当我将旧布局与 ImageViews 一起使用时 Listview OnCLick 侦听器现在无法工作 如果需要进一步正确格式化 请告诉我 我们将提供任何帮助 活动中的监听器 lvIte
  • 在 awk 中按特定顺序打印文件

    我正在关注这个链接https stackoverflow com a 54599800 10220825 https stackoverflow com a 54599800 10220825 file txt Iteration 1 RA
  • 在正确的时机批量创建视频 .srt 字幕

    好家伙 我什至不知道从什么开始 所以 我有一个包含很多视频的文件夹 我需要的是使用这些视频的名称创建字幕 同时注意其长度以创建 srt 格式的字幕 我已经查找了一些信息并复制了一些代码 echo off set dirpath 1 dir
  • 谷歌可视化将 0 轴与两个不同的 y 轴对齐

    我正在创建一个组合图 https developers google com chart interactive docs gallery combochart与谷歌的可视化库 我正在绘制商店一天内的客流量和收入图表 我已将抽奖选项设置为