RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1607013
Accepted
Vitalizzare
Vitalizzare
Asked:2025-02-16 16:46:08 +0000 UTC2025-02-16 16:46:08 +0000 UTC 2025-02-16 16:46:08 +0000 UTC

如何突出显示折线图上的减少和增加区域?

  • 772

我正在 Google 电子表格中构建折线图。需要做什么才能以不同的颜色显示上升部分和下降部分?

我尝试通过使用公式创建辅助列并将其叠加在原始图表上来实现这一点(此处的列包含要显示的数据,请参见下文,并且公式的写法就像在单元格和中B一样):C2D2

=if(($B2>$B3)+($B2<$B1), $B2, na())
=if(($B2<=$B3)*($B3>$B4)+($B1<=$B2)*($B2>$B3), $B2, na())

这是当前结果,其中区域 12-13、23-24、28-29 的颜色不正确(困难之处在于类型为 的锯齿状区域[1, 2, 1, 2, 1],其中每一步都会交替增加和减少):

图表下降部分颜色不正确

我想通过创建一个公式来避免使用脚本,例如,将下降趋势分成单独的列,或者在相邻趋势之间添加中间空的半步。我不知道该怎么做。

实验文件

我处理的数据:

步 价值
1 9577
2 9601
3 9454
4 9329
5 9422
6 9238
7 9517
8 9589
9 9603
10 9564
11 9610
12 9623
十三 9616
14 9633
15 9249
16 9525
17 9549
18 9498
19 9391
20 9512
21 9530
22 9550
23 9565
24 9541
二十五 9568
二十六 9567
二十七 9571
二十八 9595
二十九 9527
三十 9621
31 9566
google-spreadsheet
  • 1 1 个回答
  • 75 Views

1 个回答

  • Voted
  1. Best Answer
    Vitalizzare
    2025-02-17T21:44:08Z2025-02-17T21:44:08Z

    B让我们使用以下公式构建一列减少的数据:

    =IF(OR($B1>$B2, $B2>$B3), $B2, NA())
    

    在这个公式中,B如果它们位于下拉轨道上,我们就使用来自的数据,否则- NA。当绘制在图表上时,此线将在空白单元格处中断。但是,如果相邻的下降轨道之间没有空单元格(即它们之间恰好有一个非下降步骤),则这些线将连接成一条连续的线,并用它们的颜色覆盖非下降图形。为了防止这种情况发生,我们将减少的段按其位置的奇偶性进行划分。为此,我们将创建一个包含减少段的起点的列。我们用它来建立对下降轨迹进行编号的累积和。我们把后者按照数字的奇偶性分成两列。在这些列中,相邻部分之间总会有空单元格。

    我们来看一个有锯齿状数据的例子[3, 2, 5, 4, 6, 3]。第一行和最后一行的公式被缩短,以避免使表格外的类型检查变得混乱,但总体而言,它们是同一类型,并通过拖动单元格来填充。为了绘制图形,我们使用列Value、、,其中我们为第一列分配蓝色,为接下来的两列分配红色Odd Slope:Even Slope

    步 价值 减少 起点 累计总数 奇数斜率 等坡
    1 3 =如果($B2>$B3,$B2,na()) =$B2>$B3 =0+$D2 =if(mod($E2, 2), $C2, na()) =if(非(mod($E2, 2)), $C2, na())
    2 2 =if(或($B2>$B3, $B3>$B4), $B3, na()) = 和 ($B2<=$B3,$B3>$B4) =$E2+$D3 =if(mod($E3, 2), $C3, na()) =if(非(mod($E3, 2)), $C3, na())
    3 5 =if(或($B3>$B4, $B4>$B5), $B4, na()) = 和 ($B3<=$B4,$B4>$B5) =$E3+$D4 =如果(mod($E4,2),$C4,na()) =if(非(mod($E4, 2)), $C4, na())
    4 4 =if(或($B4>$B5, $B5>$B6), $B5, na()) = 和 ($B4<=$B5,$B5>$B6) =$E4+$D5 =如果(mod($E5,2),$C5,na()) =if(非(mod($E5, 2)), $C5, na())
    5 6 =if(或($B5>$B6, $B6>$B7), $B6, na()) = 和 ($B5<=$B6,$B6>$B7) =$E5+$D6 =如果(mod($E6,2),$C6,na()) =if(非(mod($E6, 2)), $C6, na())
    6 3 =如果($B6>$B7,$B7,na()) =false() =$E6+$D7 =如果(mod($E7,2),$C7,na()) =如果(非(mod($E7,2)),$C7,na())

    最终绘图并正确着色


    P.S. 我们可以把上面概述的逻辑写成一个公式:

    =let(r, count(B2:B), data, indirect("B2:B"&(r+1)), 
    
    __doc__, "For data placed in B2:B get declining slopes separated in two columns by their order number", 
    
    gt_next, lambda(i, index(data,i) > index(data,i+1)), _1, "greater then next",
    lt_prev, lambda(i, index(data,i) < index(data,i-1)), _2, "less then previous",
    is_declining, lambda(i, or(gt_next(i), lt_prev(i))), _3, "is in the beginning, middle or in the end of declining slope",
    declining_marks, vstack(gt_next(1), map(sequence(r-2, 1, 2), is_declining), lt_prev(r)),
    slopes, arrayformula(if(declining_marks, data,)),    _4, "Select data placed on the declaining slopes",
    starting_points, vstack(gt_next(1), map(sequence(r-2, 1, 2), lambda(i, and(gt_next(i), not(lt_prev(i))))), false()),
    
    _5, "Assign order number to each declining slope",
    cumsum, makearray(r, 1, lambda(x, y, sum(arrayformula(n(chooserows(starting_points, sequence(x))))))),
    
    _6, "Place the declining slopes left or right based on the oddity of their order number",
    map(slopes, cumsum, lambda(v, n, if(isodd(n), hstack(v, ), hstack(, v)))))
    

    假设索引和数据在前两列,我们将公式放在单元格中C2。其执行结果将是两列部分递减的列,两列之间肯定会有空单元格:

    公式结果

    • 3

相关问题

  • 用谷歌电子表格值替换公式

  • 比较运算符 ">=" "<=" 在 Google 电子表格公式中无法正常工作

  • Google 表格:查询表格格式

  • ArrayFormula 与 ImportRange 的区别

  • 谷歌表格一个公式两列

  • 如何计算使用的唯一词的数量

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5