【问题标题】:How to color plot by increasing shade of a color by the values of a categorical column using plot() function R如何通过使用plot()函数R通过分类列的值增加颜色的阴影来为绘图着色
【发布时间】:2025-11-30 03:55:02
【问题描述】:

我有一个包含 3 列的数据框,我正在尝试按分类列年份绘制车祸与损失,其中每年将被分配不同的颜色阴影。我希望颜色是从最浅到最深的颜色阴影。例如,数据框中的最小年份是 1946 年,最大年份是 2003 年,因此 1946 年应该是分配颜色的最浅色度,而 2003 年应该是最暗度。我可以按年为情节着色,但我观察到每隔几年分配给相同的一组颜色。我希望年度进展在视觉上可以区分。以下是最小的可重现数据框和我迄今为止的尝试。

# creating dataframe
year <- data.frame(year = seq(1946,2003,1))
crashes <- data.frame(crashes = c(386,317,294,287,266,245,268,296,226,265,243,239,183,212,195,224,170,169,140, 147,111,119,100,115,128,111,80,77,68,69,84,72,90,82,59,67,45,59,50,64,55,63,56,56,57,68,34,32,26,21,20,30,35,28  ,22,27,34,NA))
losses <- data.frame(losses = c(432,423,341,291,282,288,387,323,229,305,244,333,200,215,211,245,197,177,153,152, 115,189,124,129,133,120,91,90,69,78,88,77,95,98,62,70,45,62,70,68,65,73,90,65,61,74,39,33,31,22,21,39,35,58,25,36 ,40,NA))
df <- cbind(year,crashes,losses)
# plotting
plot(df$crashes, df$losses, main = "Sum of Car Crashes and the Total sum of Losses per Year",xlab = "Car Crashes", ylab = "Losses", col = df$year)
legend(x = 401,y = 510, legend = df$year,cex=.3, fill = df$year, xpd=TRUE)

【问题讨论】:

    标签: r plot


    【解决方案1】:

    您可以通过指定所需的颜色数(长度(df$year))来创建调色板,并将其用作绘图语句的参数。

    mypalette <- rainbow(length(df$year))
    plot(df$crashes, df$losses, main = "Sum of Car Crashes and the Total sum of Losses per Year",xlab = "Car Crashes", ylab = "Losses", col = mypalette)
    

    使用 viridis 调色板的多种颜色示例:

    install.packages("viridis")  # Install
    library("viridis")           # Load
    palette <- viridis(length(df$year))
    plot(df$crashes, df$losses, main = "Sum of Car Crashes and the Total sum of Losses per Year",xlab = "Car Crashes", ylab = "Losses", col = palette)
    

    更多调色板颜色:https://www.datanovia.com/en/blog/top-r-color-palettes-to-know-for-great-data-visualization/

    【讨论】: