我試圖通過使用 scale_x_date 設定 x 軸限制來繪制特定范圍資料點的條形圖,但我發現這排除了限制向量的邊界。
下面的例子
df = data.frame(
date = as.Date(c("2021-10-10","2021-10-11","2021-10-12","2021-10-13",
"2021-10-14","2021-10-15","2021-10-16",
"2021-10-17","2021-10-18","2021-10-19")),
count = c(1,2,3,4,1,2,2,1,2,3)
)
a = ggplot(df, aes(x=date, y=count))
geom_bar(stat="identity", colour="black", fill="steelblue")
scale_x_date(limits = c(df$date[5], df$date[10]))
a
我試圖顯示從日期 5 到日期 10 的資料,但這會切斷日期 5 和日期 10 的資料。
我應該如何設定限制以包含邊界?
uj5u.com熱心網友回復:
快速修復:
a = ggplot(df, aes(x=date, y=count))
geom_bar(stat="identity", colour="black", fill="steelblue")
scale_x_date(limits = c(df$date[5]-1, df$date[10] 1))
uj5u.com熱心網友回復:
尺度中越界值發生的情況由oob引數決定。因為您有內部由 xmin/xmax/ymin/ymax 值引數化的條形,所以第一個xmin和最后一個xmax超出了您的限制(因此這些被視為越界)。您可以使用scales::oob_keep().
library(ggplot2)
df = data.frame(
date = as.Date(c("2021-10-10","2021-10-11","2021-10-12","2021-10-13",
"2021-10-14","2021-10-15","2021-10-16",
"2021-10-17","2021-10-18","2021-10-19")),
count = c(1,2,3,4,1,2,2,1,2,3)
)
p <- ggplot(df, aes(x=date, y=count))
geom_col(colour="black", fill="steelblue")
p
scale_x_date(limits = c(df$date[5], df$date[10]),
oob = scales::oob_keep)

但是,您很可能希望通過擴展限制以包括它們的 xmin/xmax 值來容納第一個和最后一個條形。
p
scale_x_date(limits = c(df$date[5] - 0.5, df$date[10] 0.5))
#> Warning: Removed 4 rows containing missing values (position_stack).

由reprex 包(v2.0.1)于 2021 年 10 月 20 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/326968.html
