gpt4 book ai didi

r - ggplot2:按颜色和线型区分线条

转载 作者:行者123 更新时间:2023-12-05 02:22:05 24 4
gpt4 key购买 nike

所以当我必须绘制很多线条时,我可以通过颜色或线型来区分它们

library(ggplot2)
pd = cbind.data.frame(x = rep(c(1,2), each = 4),
y = rep(1:4, times=2),
type = rep(c("A", "B", "C", "D"), times=2))
ggplot(pd, aes(x=x, y=y, col=type)) + geom_line() + theme_bw()
ggplot(pd, aes(x=x, y=y, lty=type)) + geom_line() + theme_bw()

给予:

enter image description here enter image description here

但我想要两者并且我希望自动选择颜色和线型(即我不想为每个 type 手动指定颜色和线型,如这个问题:ggplot2 manually specifying color & linetype - duplicate legend)。

这是我想要的输出的示例(加上自动生成的图例):

enter image description here

理想的是这样的命令

ggplot(pd, aes(x=x, y=y, style=type)) + geom_line() + theme_bw()

但我想需要有一个解决方法。

P.S:这样做的动机是 20 多条线很难单独通过颜色或线型来区分,这就是为什么我正在寻找两者的组合。所以红色虚线不同于红色实线,两者都不同于蓝色实线。而且我不想在每次将数据提供给 ggplot 时自己指定和选择颜色和线型。

最佳答案

我知道您想避免手动指定,但它不必像您链接到的示例那样令人生畏。以下 20 行示例(color_lty_cross 最多可容纳 60 行):

library(ggplot2)

pd = cbind.data.frame(x = rep(c(1,2), each = 20),
y = rep(1:20, times=2),
type = rep(LETTERS[1:20], times=2))

# this function regenerates ggplot2 default colors
gg_color_hue <- function(n) {
hues = seq(15, 375, length = n + 1)
hcl(h = hues, l = 65, c = 100)[1:n]
}

color_lty_cross = expand.grid(
ltypes = 1:6,
colors = gg_color_hue(10)
,stringsAsFactors = F)


ggplot(pd, aes(x=x, y=y, col=type, lty = type)) +
geom_line() +
scale_color_manual(values = color_lty_cross$colors[1:20]) +
scale_linetype_manual(values = color_lty_cross$ltypes[1:20]) +
theme_bw()

您可以通过合并快速映射到 type 您可以使用更简单的颜色,然后使用映射 ggplot2 默认值的 gg_color_hue

enter image description here

关于r - ggplot2:按颜色和线型区分线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31275054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com