首页 > 解决方案 > 如何通过使用plot()函数R通过分类列的值增加颜色的阴影来为绘图着色

问题描述

我有一个包含 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)

标签: rplot

解决方案


您可以通过指定需要多少颜色(长度(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/


推荐阅读