0

我想绘制一个非常简单的线图(实际上是时间序列图)。我唯一想要的是线条不是黑色而是使用的默认色轮的第一种颜色ggplot2(即替换默认的“黑色”---可能在某处指定---用第一种颜色默认 ggplot2 调色板)。

我只提出了一个非优雅的版本,我手动指定了第一种颜色的 HCL 值 ( hcl(h=15, l=65, c=100)) - 感谢此答案中的信息:https ://stackoverflow.com/a/8197703/1477035

没有更优雅的方式吗?我还考虑过包含一个只有一个值的因子变量,然后指定colour=as.factor(MyFactorVariable),但这会na.rm = T以某种方式搞砸(因为我需要在 NA 出现的行中有间隙)。

数据样本:

structure(list(Date = structure(c(15701, 15702, 15703, 15704, 
15705, 15706, 15707, 15708, 15709, 15710, 15711, 15712, 15713, 
15714, 15715, 15716, 15717, 15718, 15719, 15720, 15721, 15722, 
15723, 15724, 15725, 15726, 15727, 15728, 15729, 15730, 15731, 
15732, 15733, 15734, 15735, 15736, 15737, 15738, 15739, 15740
), class = "Date"), Additions = c(398L, 212L, 171L, 133L, 124L, 
99L, 105L, 103L, 99L, 101L, 104L, 102L, 99L, 70L, 76L, 95L, 51L, 
76L, 76L, 65L, 73L, 84L, 71L, 82L, 47L, 78L, 65L, 73L, 79L, 64L, 
45L, NA, NA, NA, NA, NA, NA, NA, 149L, 198L)), .Names = c("Date", 
"Additions"), row.names = c(NA, 40L), class = "data.frame")

代码:

p <- ggplot(data, aes(Date, Additions), na.rm = T) 
p <- p + geom_line(colour=hcl(h=15, l=65, c=100)) + scale_x_date(labels = date_format("%B")) 
p <- p + xlab("Date of addition") + ylab("Daily additions to user database") 
p <- p + theme_minimal() + theme(plot.margin = unit(c(1,1,1,1), "cm"), 
                        axis.title.x = element_text(vjust=-1),
                        axis.title.y = element_text(angle=90, vjust=0),
                        panel.grid.minor = element_blank(),
                        plot.background = element_rect(fill = rgb(0.99,0.99,0.99))
                        ) 

p

这给出了:

输出

4

1 回答 1

2

这够优雅吗?

ggdefault_cols <- function(n) hcl(h=seq(15, 375-360/n, length=n)%%360, 
                                  c=100, l=65)

#First 4 ggplot default colours:
ggdefault_cols(4)
#[1] "#F8766D" "#7CAE00" "#00BFC4" "#C77CFF"

ggplot(data, aes(Date, Additions), na.rm = T) + 
        geom_line(colour=ggdefault_cols(1))
于 2013-07-29T11:16:43.417 回答