如何在数据集的一部分线下着色

时间:2018-02-15 21:05:31

标签: r

我有一个简单的实验相同数据图。

* 210 ==  1234       % 2^8
*   4 == (1234/2^ 8) % 2^8
*   0 == (1234/2^16) % 2^8
*   0 == (1234/2^24) % 2^8

enter image description here 我想遮住线下的特定区域,比方说35-45mm。从我到目前为止搜索的内容来看,我认为我需要使用面函数,但我不确定如何从像这样的大数据集中分配顶点。到目前为止,我见过的每个例子都使用了正常的曲线。

感谢任何帮助,我是R / RStudio的新手!

1 个答案:

答案 0 :(得分:0)

以下是使用tidyverse工具的解决方案,包括ggplot2。我使用内置的airquality数据集作为示例。

第一部分只是将数据放入我们可以通过将月份和日期组合成单个日期来绘制的格式。您只需在数据中替换date PositionA即可。

library(tidyverse)
df <- airquality %>%
  as_tibble() %>%
  magrittr::set_colnames(str_to_lower(colnames(.))) %>%
  mutate(date = as.Date(str_c("1973-", month, "-", day)))

这是情节代码。在ggplot2中,我们从函数ggplot()开始,并使用geom+添加geom_line函数,以便在图层中创建绘图。

第一个函数x根据geom变量按照它们出现的顺序连接所有观察结果,因此它会生成我们看到的行。每个mapping都需要特定date美学,所以我们在x轴上需要temp,y轴需要aes(x = date, y = temp),所以我们写geom_ribbon

第二个函数x用于绘制ymaxymin之间特定ymin = 55值的频段。这样,我们可以通过选择常量ymax = temp(低于最低温度的值)并设置data来遮蔽线下方的区域。

我们通过指定geom参数来对图表的特定部分进行着色。通常,ggplot()函数会对来自filter的数据集继承起作用,但您可以通过单独指定来覆盖它们。在这里,我们使用date仅绘制geom_ribbonggplot(df) + geom_line(aes(x = date, y = temp)) + geom_ribbon( data = filter(df, date < as.Date("1973-07-01") & date > as.Date("1973-06-01")), mapping = aes(x = date, ymax = temp, ymin = 55) ) 在6月份的点。

use rocket::response::content::Html;
#[get("/")]
fn page_index() -> Html<&'static str> {
    Html(r"<html>...</html>")
}

这给出了下面的图表:

reprex package(v0.2.0)创建于2018-02-20。