r-为什么ggplot scale_color_manual na.value参数不起作用



我在使用scale_color_manual的na.value参数时遇到了问题。它根本没有任何作用。我使用以下代码生成一个填充的等高线图。

p1<-ggplot(wc_results_daily, aes(date_day, depth_num, z=daily_mean)) + 

scale_color_manual(aesthetics = "fill", 
values = break_vec$break_colors, 
labels = break_vec$break_labels, 
name="Water Content",
drop=FALSE,
na.value = "black")+

geom_contour_filled(show.legend = TRUE, 
colour="white", 
breaks = break_vec$breaks_bining)+

geom_text_contour(aes(z = daily_mean))+

scale_y_continuous(labels=c("200 cm","135 cm","90 cm","40 cm","20 cm"), 
name="Depth")+

scale_x_date(name="Date And Time", date_breaks = "1 month" ,date_labels = "%b %d")+
theme_classic()+
labs(title="LP 4 Watercontent Over Time", subtitle=paste0("from ",first(wc_results_daily$date_day), " to ", last(wc_results_daily$date_day)))
p1

我绘制的数据如下:

wc_results_daily[1051:1070,]
# A tibble: 20 x 6
# Groups:   date_day [4]
date_day   depth  daily_mean bins     rn_2 depth_num
<date>     <fct>       <dbl> <fct>   <dbl>     <dbl>
1 2021-07-30 135 cm       20.2 18%-21%   210         2
2 2021-07-30 20 cm        NA   NA        210         5
3 2021-07-30 200 cm       26.8 24%-27%   210         1
4 2021-07-30 40 cm        32.2 30%-33%   210         4
5 2021-07-30 90 cm        27.4 27%-30%   210         3
6 2021-07-31 135 cm       20.2 18%-21%   211         2
7 2021-07-31 20 cm        NA   NA        211         5
8 2021-07-31 200 cm       26.8 24%-27%   211         1
9 2021-07-31 40 cm        32.2 30%-33%   211         4
10 2021-07-31 90 cm        27.4 27%-30%   211         3
11 2021-08-01 135 cm       20.2 18%-21%   212         2
12 2021-08-01 20 cm        NA   NA        212         5
13 2021-08-01 200 cm       26.8 24%-27%   212         1
14 2021-08-01 40 cm        32.2 30%-33%   212         4
15 2021-08-01 90 cm        27.4 27%-30%   212         3
16 2021-08-02 135 cm       20.2 18%-21%   213         2
17 2021-08-02 20 cm        NA   NA        213         5
18 2021-08-02 200 cm       26.8 24%-27%   213         1
19 2021-08-02 40 cm        32.2 30%-33%   213         4
20 2021-08-02 90 cm        27.4 27%-30%   213         3

我在x轴上绘制date_day,在y轴上绘制depth;在z轴上绘制daily_mean。其余列不在绘图中使用。

生成该图没有问题,但wc_results_day数据帧中包含na个值。但它们并没有被绘制在图表中。我只得到一个空白区域,表示na值。

空白区域代表NAs 的示例图

我很确定,这个问题与我使用的装箱秤有关。我定义了数据帧中的中断、标签和颜色:


> break_vec
break_labels break_colors breaks_bining
1         0%-3%      #FF0000             3
2         3%-6%      #DD2200             6
3         6%-9%      #BB4400             9
4        9%-12%      #996600            12
5       12%-15%      #778800            15
6       15%-18%      #55AA00            18
7       18%-21%      #32CC00            21
8       21%-24%      #10EE00            24
9       24%-27%      #00EE10            27
10      27%-30%      #00CC32            30
11      30%-33%      #00AA54            33
12      33%-35%      #008876            35
13      35%-38%      #006599            38
14      38%-41%      #0043BB            41
15      41%-44%      #0021DD            44
16      44%-47%      #0000FF            47

我想实现的是,na值以我定义的颜色绘制,并将na标签添加到图例中。

我的数据集示例dput((:

structure(list(date_day = structure(c(18827, 18828, 18828, 18828, 
18828, 18828, 18829, 18829, 18829, 18829, 18829, 18830, 18830, 
18830, 18830, 18830, 18831, 18831, 18831, 18831, 18831, 18832, 
18832, 18832, 18832, 18832, 18833, 18833, 18833, 18833, 18833, 
18834, 18834, 18834, 18834, 18834, 18835, 18835, 18835, 18835, 
18835, 18836, 18836, 18836, 18836, 18836, 18837, 18837, 18837, 
18837, 18837, 18838), class = "Date"), depth = structure(c(3L, 
2L, 5L, 1L, 4L, 3L, 2L, 5L, 1L, 4L, 3L, 2L, 5L, 1L, 4L, 3L, 2L, 
5L, 1L, 4L, 3L, 2L, 5L, 1L, 4L, 3L, 2L, 5L, 1L, 4L, 3L, 2L, 5L, 
1L, 4L, 3L, 2L, 5L, 1L, 4L, 3L, 2L, 5L, 1L, 4L, 3L, 2L, 5L, 1L, 
4L, 3L, 2L), .Label = c("200 cm", "135 cm", "90 cm", "40 cm", 
"20 cm"), class = "factor"), daily_mean = c(27.3045833333333, 
19.9475, 23.414375, 26.8395833333333, 31.5583333333333, 27.3114583333333, 
19.9672916666667, 23.2239583333333, 26.8389583333333, 31.6847916666667, 
27.290625, 19.9825, 23.0616666666667, 26.8416666666667, 31.7829166666667, 
27.273125, 19.99625, 22.9054166666667, 26.841875, 31.8722916666667, 
27.2620833333333, 20.01375, 22.7541666666667, 26.8435416666667, 
31.951875, 27.2627083333333, 20.0347916666667, 22.59375, 26.8447916666667, 
32.035, 27.2697916666667, 20.0664583333333, 22.4314583333333, 
26.8472916666667, 32.1279166666667, 27.2947916666667, 20.0879166666667, 
NA, 26.8379166666667, 32.1947916666667, 27.324375, 20.1245833333333, 
NA, 26.8385416666667, 32.2370833333333, 27.3508333333333, 20.16125, 
NA, 26.8385416666667, 32.249375, 27.375625, 20.1854166666667), 
bins = structure(c(10L, 7L, 8L, 9L, 11L, 10L, 7L, 8L, 9L, 
11L, 10L, 7L, 8L, 9L, 11L, 10L, 7L, 8L, 9L, 11L, 10L, 7L, 
8L, 9L, 11L, 10L, 7L, 8L, 9L, 11L, 10L, 7L, 8L, 9L, 11L, 
10L, 7L, NA, 9L, 11L, 10L, 7L, NA, 9L, 11L, 10L, 7L, NA, 
9L, 11L, 10L, 7L), .Label = c("0%-3%", "3%-6%", "6%-9%", 
"9%-12%", "12%-15%", "15%-18%", "18%-21%", "21%-24%", "24%-27%", 
"27%-30%", "30%-33%", "33%-35%", "35%-38%", "38%-41%", "41%-44%", 
"44%-47%", "47%-50%"), class = "factor"), bins_val = c(30, 
21, 24, 27, 33, 30, 21, 24, 27, 33, 30, 21, 24, 27, 33, 30, 
21, 24, 27, 33, 30, 21, 24, 27, 33, 30, 21, 24, 27, 33, 30, 
21, 24, 27, 33, 30, 21, NA, 27, 33, 30, 21, NA, 27, 33, 30, 
21, NA, 27, 33, 30, 21), rn_2 = c(199, 200, 200, 200, 200, 
200, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 203, 
203, 203, 203, 203, 204, 204, 204, 204, 204, 205, 205, 205, 
205, 205, 206, 206, 206, 206, 206, 207, 207, 207, 207, 207, 
208, 208, 208, 208, 208, 209, 209, 209, 209, 209, 210), depth_num = c(3, 
2, 5, 1, 4, 3, 2, 5, 1, 4, 3, 2, 5, 1, 4, 3, 2, 5, 1, 4, 
3, 2, 5, 1, 4, 3, 2, 5, 1, 4, 3, 2, 5, 1, 4, 3, 2, 5, 1, 
4, 3, 2, 5, 1, 4, 3, 2, 5, 1, 4, 3, 2)), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -52L), groups = structure(list(
date_day = structure(c(18827, 18828, 18829, 18830, 18831, 
18832, 18833, 18834, 18835, 18836, 18837, 18838), class = "Date"), 
.rows = structure(list(1L, 2:6, 7:11, 12:16, 17:21, 22:26, 
27:31, 32:36, 37:41, 42:46, 47:51, 52L), ptype = integer(0), class = c("vctrs_list_of", 
"vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -12L), .drop = TRUE))

感谢提供的任何帮助

thx。。。

毕竟这似乎不起作用!所以我决定自己回答我的问题。填充的轮廓图似乎不支持";NA颜色";。我所尝试的其他一切只会导致图形的错误显示。我现在正在使用一种解决方法来解决这个问题,通过使用na.approx((对缺失的数据进行插值。如果有太多缺失的数据,以至于插值不可信,我就不得不忍受空白。。。

Thx用于所有评论干杯

相关内容

  • 没有找到相关文章