2017-02-20 1 views
1

낮은 GDP가 더 검은 색 이상으로 GDP가 더 빨갛게되도록 플롯을 수정하는 방법은 무엇입니까? 당신은 rgb 기능을 사용하여이 작업을 수행 할 수 있습니다플롯 포인트 색상을 변경하여 데이터 반영하기

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" 
    } 
) 
+2

재현 할 수없는 예제없이 R을 사용하는 방법에 관한 문제이므로이 질문을 주제와 관련이없는 것으로 보겠습니다. – gung

+0

이러한 색상을 사용하는 경우 'ggplot2'로 전환하는 예가 될 수 있습니다. 기본 그래픽을 사용하면 코드 그레이와 같은 함수를 만들 수 있습니다. <- function (var, min, max) var <- (var-min)/(max-min) var <- round (100 * var) col1 <- paste ("gray", var, sep = "") col1} 그리고 그것을 plot에 col = 인수로 사용하십시오. 사용 예제 : 결과 코드 그레이 (runif (10), 0,1)를주는 코드 그레이 (runif (10), 0,1) [1] "grey52" "grey58" "grey99" "grey31" "grey67" "grey48" "grey44" "grey4" [9] "grey3" "grey63" –

답변

0

(I는 R에, 소개 데이터 점등 & 마주 클래스에서 비교적 새로운 해요). 빨강, 녹색 및 파랑 값을 가져 와서 색상을 출력합니다. 검은 색은 빨간색, 녹색 및 파란색에 대해 0에 해당합니다. 따라서 검은 색에서 빨간색으로 가려면 녹색과 파란색을 0으로 설정하고 빨간색 값을 높이면됩니다.

당신은 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 
) 

내가 데이터에 그것을 할 수없는 범위에 변수를 변환해야합니다,하지만 난 인공에 그것을 테스트 할 때 괜찮 았는데 데이터.

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() 명령을 입력하십시오.

관련 문제