R语言 ggplot 13条线以上的不同线样式的线图

mkshixfv  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(113)

我试图用ggplot绘制一个有15条线的线图。我想让这些线条变化,以便更容易阅读。我找到了一种方法,使线从点,虚线和直线不同,但是,它只适用于多达13个变量,然后不会绘制最后两个。有人有办法解决这个问题吗?
这是我尝试做的一个例子。

states_list = list('Alabama', 'Alaska', 'Arkansas', 'California', 'Colorado', 'Delaware', 'Flordia', 'New Mexico', 'New York', 'Oregon', 'Hawaii', 'Idaho', 'Utah', 'Washington', 'Vermont')

states_repeat = rep(states_list, 8)

states_df <-data.frame(states = unlist(states_repeat), years = list(rep(2014:2021, times = 15)), value = (rnorm(120)))

colnames(states_df) <- c('states', 'years', 'value')

statesplot <- ggplot(states_df, aes(x = years, y = value, group = states, colour = states)) +
  geom_line(aes(linetype = states))
            
statesplot

这是图的样子(https://i.stack.imgur.com/oTPyz.png

wtlkbnrh

wtlkbnrh1#

通常不建议使用许多不同的线型,因为这些线很难区分。scales::linetype_pal()提供的linotypes的默认调色板最多只提供13种不同的linotypes,这可能是原因之一。尽管如此,如果您需要更多线型,您可以扩展默认选项板或创建自己的选项板。有关如何创建自定义线型的详细信息,请参见美学规范插图。在下面的代码中,我扩展了默认的线型选项板:

library(ggplot2)
library(scales)

lty_pal <- c(linetype_pal()(13), "1373", "88")

ggplot(states_df, aes(
    x = years,
    y = value,
    group = states,
    colour = states
  )) +
  geom_line(aes(linetype = states)) +
  scale_linetype_manual(values = lty_pal)

相关问题