【问题标题】:Line plot with a color gradient between two fixed ends在两个固定端之间具有颜色渐变的线图
【发布时间】:2020-10-08 18:54:56
【问题描述】:

我有一个图,表示水箱内的水位 (y) 随时间 (x) 的变化。知道水箱的最低水位和最高水位后,我想创建一个水平线的颜色渐变,从蓝色(当水位接近零时)到当水位接近最大值时为红色。

例如,水箱的极限值为y_min = 0.00my_max = 3m,在这种情况下,图表会在 0 到 1.20m 之间振荡,因此不会出现红色阴影。 你能帮帮我吗?我正在附加 data.frame 中的一些数据来创建图表。非常感谢。

TANK (data.frame)
       $datetime         $level  $variables $values $time
16  2014-06-28 17:56:00    0.00 Q_INGRESSO    0.41  0.25
17  2014-06-28 17:57:00    0.01 Q_INGRESSO    0.91  0.27
18  2014-06-28 17:58:00    0.01 Q_INGRESSO    1.77  0.28
19  2014-06-28 17:59:00    0.02 Q_INGRESSO    0.65  0.30
20  2014-06-28 18:00:00    0.03 Q_INGRESSO    2.42  0.32
21  2014-06-28 18:01:00    0.04 Q_INGRESSO    3.78  0.33
22  2014-06-28 18:02:00    0.06 Q_INGRESSO    5.63  0.35
23  2014-06-28 18:03:00    0.10 Q_INGRESSO    7.21  0.37
24  2014-06-28 18:04:00    0.15 Q_INGRESSO   23.17  0.38
25  2014-06-28 18:05:00    0.24 Q_INGRESSO  123.99  0.40
26  2014-06-28 18:06:00    0.41 Q_INGRESSO  376.17  0.42
27  2014-06-28 18:07:00    0.56 Q_INGRESSO  656.24  0.43
28  2014-06-28 18:08:00    0.64 Q_INGRESSO  891.72  0.45
29  2014-06-28 18:09:00    0.77 Q_INGRESSO 1469.96  0.47
30  2014-06-28 18:10:00    0.85 Q_INGRESSO 1955.89  0.48
31  2014-06-28 18:11:00    0.97 Q_INGRESSO 2333.80  0.50
32  2014-06-28 18:12:00    1.05 Q_INGRESSO 2558.26  0.52
33  2014-06-28 18:13:00    1.10 Q_INGRESSO 2793.53  0.53
34  2014-06-28 18:14:00    1.12 Q_INGRESSO 2935.18  0.55
35  2014-06-28 18:15:00    1.13 Q_INGRESSO 2967.78  0.57
36  2014-06-28 18:16:00    1.14 Q_INGRESSO 2978.83  0.58
37  2014-06-28 18:17:00    1.13 Q_INGRESSO 2964.84  0.60
38  2014-06-28 18:18:00    1.13 Q_INGRESSO 2945.94  0.62
39  2014-06-28 18:19:00    1.13 Q_INGRESSO 2910.81  0.63
40  2014-06-28 18:20:00    1.12 Q_INGRESSO 2859.38  0.65
41  2014-06-28 18:21:00    1.11 Q_INGRESSO 2798.38  0.67
42  2014-06-28 18:22:00    1.10 Q_INGRESSO 2718.95  0.68
43  2014-06-28 18:23:00    1.08 Q_INGRESSO 2621.13  0.70
44  2014-06-28 18:24:00    1.07 Q_INGRESSO 2531.05  0.72
45  2014-06-28 18:25:00    1.05 Q_INGRESSO 2428.74  0.73
46  2014-06-28 18:26:00    1.04 Q_INGRESSO 2321.52  0.75
47  2014-06-28 18:27:00    1.02 Q_INGRESSO 2212.85  0.77
48  2014-06-28 18:28:00    1.00 Q_INGRESSO 2104.01  0.78
49  2014-06-28 18:29:00    0.98 Q_INGRESSO 1999.15  0.80
50  2014-06-28 18:30:00    0.97 Q_INGRESSO 1895.27  0.82
51  2014-06-28 18:31:00    0.95 Q_INGRESSO 1804.06  0.83
52  2014-06-28 18:32:00    0.94 Q_INGRESSO 1713.20  0.85
53  2014-06-28 18:33:00    0.92 Q_INGRESSO 1636.14  0.87
54  2014-06-28 18:34:00    0.90 Q_INGRESSO 1560.66  0.88
55  2014-06-28 18:35:00    0.89 Q_INGRESSO 1492.37  0.90

【问题讨论】:

    标签: r


    【解决方案1】:

    使用不同的数据集来展示我认为你想要的效果:

    d <- tibble(x=0:100, y=100*dweibull(0:100, 3, 40))
    d %>% 
      ggplot(aes(x=x, y=y, colour=y)) + 
        geom_line() + 
        scale_colour_gradient(low="blue", high="red")
    

    给予

    【讨论】:

    • 感谢您的回答,问题是这样最大值和最小值对应于图中包含的值,而我希望将它们设置为y_min = 0.00m和@987654325 @,虽然图表只在 0 到 1.20 之间波动,但通过这种方式我知道水平达到了多少可能的最大值。
    • 好的。这需要稍作调整:将limits=c(0, 3) 添加到比例定义中,将red 修复为3,而不是观察到的最大值。很抱歉第一次没有接听。
    猜你喜欢
    • 2015-09-21
    • 2014-09-18
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多