我如何修复我的情节,以便说GDP越低越黑,GDP越高越红? (我在介绍Data Lit& Vis类,对R来说相当新)
data <-read.csv("rosling.csv")
head(data)
tail(data)
median(data$pcGDP)
median(data$life.expectancy)
#median per-capita GDP: 4500.592
#median life expectancy: 72.84712
options(scipen=999)
data$gdp <- data$pcGDP*data$total.population
data$gdp[data$country=="United States"]
#calculated GDP of the United States: 14419400000770
data$gdp[data$country=="Niger"]
#calculated GDP of Niger: 5410608052
data$gdp[data$country=="Bahrain"]
#calculated GDP of Bahrain: 25713571418
mean(data$pcGDP)
# 12825
#Part 3
plot(log(data$pcGDP),
data$life.expectancy,
cex=(data$total.population/1000000000)+1,
col=if(data$pcGPD <= 12825){
"red"
} else{
"black"
}
)
答案 0 :(得分:0)
您可以使用rgb
功能执行此操作。它采用红色,绿色和蓝色的值并输出颜色。对于红色,绿色和蓝色,黑色对应于零。因此,从黑色变为红色,您可以将绿色和蓝色设置为零并增加红色值。
您需要介于0和1之间的值,因此首先应将变量转换为此范围
# make a copy of the data$pcGDP variable
x <- data$pcGDP
# convert to [0,1]
x <- (x-min(x))/(max(x)-min(x))
# create a vector of colours
col <- rgb(x, 0, 0)
# plot
plot(log(data$pcGDP),
data$life.expectancy,
cex=(data$total.population/1000000000)+1,
col=col
)
显然我不能对你的数据做这件事,但是当我在人工数据上测试时,它运行良好。
答案 1 :(得分:0)
下面给出了另一种解决方案(仅提供灰度)(更好的解决方案是切换到ggplot2
图形系统)。制作功能
codegrey <- function(var,min,max) {
var <- (var-min)/(max-min)
var <- round(100*var)
col1 <- paste("grey",var,sep="")
col1}
生成输出的示例调用如下:
codegrey(runif(10),0,1)
[1] "grey52" "grey58" "grey99" "grey31" "grey67" "grey48" "grey44" "grey4"
[9] "grey3" "grey63"
然后你可以在这样的情节命令中使用它:
plot(log(data$pcGDP),
data$life.expectancy,
cex=(data$total.population/1000000000)+1,
col=codegrey(log(data$pcGDP),min(log(data$pcGDP)),
max(log(data$pcGDP)))
)
(但你不应该把你的数据框称为“数据”,你不会把你的狗称为“狗”!)要获得R已知的所有颜色名称的列表,请输入命令
colors()
。