히스토그램과 산점도는 데이터와 변수 간의 관계를 시각화하는 훌륭한 방법이지만 최근에 어떤 시각화 기술이 누락되었는지 궁금합니다. 가장 많이 사용되지 않는 줄거리 유형은 무엇이라고 생각하십니까?
답변은 :
- 실제로는 일반적으로 사용되지 않습니다.
- 많은 배경 토론없이 이해할 수 있습니다.
- 많은 일반적인 상황에 적용 할 수 있습니다.
- 예제를 만들기 위해 재현 가능한 코드를 포함하십시오 (바람직하게는 R). 연결된 이미지가 좋을 것입니다.
히스토그램과 산점도는 데이터와 변수 간의 관계를 시각화하는 훌륭한 방법이지만 최근에 어떤 시각화 기술이 누락되었는지 궁금합니다. 가장 많이 사용되지 않는 줄거리 유형은 무엇이라고 생각하십니까?
답변은 :
답변:
나는 다른 포스터에 정말 동의합니다 : Tufte의 책은 환상 적이고 읽을만한 가치가 있습니다.
먼저, 올해 초 "데이터 찾기"의 ggplot2 및 ggobi에 대한 유용한 자습서를 소개하겠습니다 . 그 외에도 R에서 하나의 시각화와 두 개의 그래픽 패키지 (기본 그래픽, 격자 또는 ggplot만큼 널리 사용되지 않는)를 강조하겠습니다.
히트 맵
다변량 데이터, 특히 시계열 데이터를 처리 할 수있는 시각화가 정말 좋습니다. 히트 맵 이 유용 할 수 있습니다. 정말 깔끔한 하나는 David Smith가 Revolutions 블로그에 소개했습니다 . Hadley가 제공 한 ggplot 코드는 다음과 같습니다.
stock <- "MSFT"
start.date <- "2006-01-12"
end.date <- Sys.Date()
quote <- paste("http://ichart.finance.yahoo.com/table.csv?s=",
stock, "&a=", substr(start.date,6,7),
"&b=", substr(start.date, 9, 10),
"&c=", substr(start.date, 1,4),
"&d=", substr(end.date,6,7),
"&e=", substr(end.date, 9, 10),
"&f=", substr(end.date, 1,4),
"&g=d&ignore=.csv", sep="")
stock.data <- read.csv(quote, as.is=TRUE)
stock.data <- transform(stock.data,
week = as.POSIXlt(Date)$yday %/% 7 + 1,
wday = as.POSIXlt(Date)$wday,
year = as.POSIXlt(Date)$year + 1900)
library(ggplot2)
ggplot(stock.data, aes(week, wday, fill = Adj.Close)) +
geom_tile(colour = "white") +
scale_fill_gradientn(colours = c("#D61818","#FFAE63","#FFFFBD","#B5E384")) +
facet_wrap(~ year, ncol = 1)
어느 쪽이 다음과 같이 보입니다.
RGL : 대화식 3D 그래픽
배우려는 노력의 가치가있는 또 다른 패키지는 대화식 3D 그래픽을 쉽게 만들 수있는 RGL 입니다. 온라인에 대한 많은 예제가 있습니다 (rgl 문서 포함).
R-Wiki에는 rgl을 사용하여 3D 산점도를 그리는 방법에 대한 좋은 예가 있습니다.
고비
알아야 할 또 다른 패키지는 rggobi 입니다. 이 주제에 스프링 책은 훌륭한 많은 문서 / 예는에 포함, 온라인 및 "데이터를 보면" 물론.
나는 도트 플롯을 정말로 좋아 하며 적절한 데이터 문제에 대해 다른 사람들에게 추천 할 때 항상 놀라고 기뻐합니다. 그들은 많이 사용하지 않는 것 같아서 이유를 알 수 없습니다.
다음은 Quick-R의 예입니다.
나는 클리블랜드가 이들의 개발과 공포에 가장 큰 책임을지고 있다고 생각하며, 그의 책 (예 : 결함이있는 데이터가 도트 플롯으로 쉽게 감지 된)의 예가 그들의 사용에 대한 강력한 논증이다. 위의 예는 한 줄에 하나의 점만 넣는 반면 실제 출력은 각 줄에 여러 개의 점이 있으며 어느 쪽이 어느 것인지 설명하는 범례가 있습니다. 예를 들어, 세 가지 다른 시점에 다른 심볼이나 색상을 사용할 수 있으며, 따라서 다른 카테고리에서 쉽게 시간 패턴을 얻을 수 있습니다.
다음 예제 (모든 일을 Excel에서 완료했습니다!)에서 레이블 교환으로 인해 어떤 범주가 발생했는지 명확하게 확인할 수 있습니다.
극좌표를 사용하는 플롯은 확실히 사용되지 않습니다. 일부는 정당한 이유가 있습니다. 나는 그들의 사용을 정당화하는 상황은 일반적이지 않다고 생각한다. 또한 이러한 상황이 발생하면 극좌표는 선형 도표로는 불가능한 데이터 패턴을 나타낼 수 있다고 생각합니다.
때로는 데이터가 선형이 아니라 본질적으로 극좌표 이기 때문에 데이터가 주기적이거나 (24 일 동안 24 시간 동안 여러 시간 동안 시간을 나타내는 x 좌표) 데이터가 이전에 극좌표 형상 공간에 매핑 되었기 때문이라고 생각합니다 .
다음은 예입니다. 이 그림은 시간별 웹 사이트의 평균 트래픽 양을 보여줍니다. 오후 10시와 오전 1시에 두 개의 급등에 주목하십시오. 사이트의 네트워크 엔지니어에게는 중요한 역할을합니다. 또한 서로 가까이 ( 두 시간 간격으로) 발생한다는 점도 중요합니다 . 그러나 기존 좌표계에서 동일한 데이터를 플로팅하면이 패턴이 완전히 숨겨져 선형으로 표시됩니다.이 두 스파이크는 20 시간 간격으로 연속 날짜에 2 시간 간격으로 표시됩니다. 위의 극좌표 차트는이 내용을 포용적이고 직관적 인 방식으로 보여줍니다 (전설은 필요하지 않음).
R을 사용하여 이와 같은 플롯을 만드는 방법에는 두 가지가 있습니다 (알고 있습니다). 하나는 기본 또는 그리드 그래픽 시스템에서 자신의 기능을 코딩하는 것입니다. 더 쉬운 다른 방법은 순환 패키지 를 사용하는 것 입니다. 사용할 함수는 ' rose.diag '입니다.
data = c(35, 78, 34, 25, 21, 17, 22, 19, 25, 18, 25, 21, 16, 20, 26,
19, 24, 18, 23, 25, 24, 25, 71, 27)
three_palettes = c(brewer.pal(12, "Set3"), brewer.pal(8, "Accent"),
brewer.pal(9, "Set1"))
rose.diag(data, bins=24, main="Daily Site Traffic by Hour", col=three_palettes)
qplot(y=data, x=1:length(data), fill=factor(1:length(data)), stat='identity', geom='bar') + coord_polar()
산점도에 점이 너무 많아 완전히 엉망이되면 부드러운 산점도를 사용해보십시오. 예를 들면 다음과 같습니다.
library(mlbench) ## this package has a smiley function
n <- 1e5 ## number of points
p <- mlbench.smiley(n,sd1 = 0.4, sd2 = 0.4) ## make a smiley :-)
x <- p$x[,1]; y <- p$x[,2]
par(mfrow = c(1,2)) ## plot side by side
plot(x,y) ## left plot, regular scatter plot
smoothScatter(x,y) ## right plot, smoothed scatter plot
hexbin
(@Dirk Eddelbuettel 제안) 패키지는 동일한 목적으로 사용되지만, smoothScatter()
그것이 속한 이점 갖는 graphics
패키지, 따라서 표준 R 설치 부분이다.
스파크 라인 및 기타 Tufte 아이디어와 관련 하여 CRAN 의 YaleToolkit 패키지 는 기능 및을 제공합니다 . sparkline
sparklines
대용량 데이터 세트에 유용한 또 다른 패키지는 데이터를 버킷에 영리하게 '고정'하여 순진 산점도에 비해 너무 큰 데이터 세트를 처리하므로 헥사 빈입니다.
Hmisc::latex()
로부터 출력 된 버전은 Hmisc::describe
표에 포함 된 도착 미니 히스토그램을 포함한다.
바이올린 플롯 (상자 플롯과 커널 밀도를 결합한)은 비교적 이국적이고 매우 시원합니다. R 의 vioplot 패키지를 사용하면 쉽게 만들 수 있습니다.
다음은 예제입니다 (wikipedia 링크도 예제를 보여줍니다).
bwplot(... panel = panel.violin)
방금 검토 한 또 다른 멋진 시계열 시각화 는 "범프 차트"입니다 ( 이 게시물의 "Learning R"블로그에 나와 있음 ). 시간이 지남에 따라 위치 변화를 시각화하는 데 매우 유용합니다.
http://learnr.wordpress.com/ 에서 작성하는 방법에 대해 읽을 수 있지만 다음과 같이 보입니다.
또한 Tufte의 boxplots 수정을 좋아합니다. 작은 배수는 가로가 매우 "얇고"중복 잉크로 줄거리를 작성하지 않기 때문에 훨씬 쉽게 비교할 수 있습니다. 그러나 상당히 많은 수의 범주에서 가장 잘 작동합니다. 줄거리에 몇 개만 있다면 정규 (Tukey) 상자 그림은 조금 더 무겁기 때문에 더 좋아 보입니다.
library(lattice)
library(taRifx)
compareplot(~weight | Diet * Time * Chick,
data.frame=cw ,
main = "Chick Weights",
box.show.mean=FALSE,
box.show.whiskers=FALSE,
box.show.box=FALSE
)
이것들을 만드는 다른 방법들 (다른 종류의 Tufte boxplot 포함) 이이 질문에서 논의됩니다 .
우리는 귀엽고 (역사적으로) 중요한 줄기-잎 그림 (Tufte가 좋아하는)을 잊지 말아야합니다. 데이터 밀도와 모양에 대한 직접적인 수치 개요를 얻을 수 있습니다 (물론 데이터 세트가 약 200 포인트보다 크지 않은 경우). R에서 함수 stem
는 줄기 및 잎 디 레이를 생성합니다 (작업 공간에서). fmsbgstem
패키지의 함수 를 사용 하여 그래픽 장치에 직접 그리는 것을 선호합니다 . 다음은 줄기 별 표시에서 비버 체온 변화 (데이터는 기본 데이터 세트에 있어야 함)입니다.
require(fmsb)
gstem(beaver1$temp)
박스 플롯! R 도움말의 예 :
boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
제 생각에는 데이터를 빠르게 보거나 분포를 비교하는 가장 편리한 방법입니다. 보다 복잡한 배포를 위해이라는 확장자가 vioplot
있습니다.
Edward Tufte의 작품과 특히이 책을 확인하십시오
당신은 또한 그의 여행 프리젠 테이션을 시도하고 잡을 수 있습니다 . 그것은 꽤 좋고 그의 4 권의 책 묶음을 포함하고 있습니다. (저는 그의 출판사의 주식을 가지고 있지 않다고 맹세합니다!)
그건 그렇고, 나는 그의 스파크 라인 데이터 시각화 기술을 좋아합니다. 놀라다! 구글은 이미 그것을 작성하고 구글 코드 에 넣어