Ian*_*ows 176 graphics plot visualization r ggplot2
直方图和散点图是可视化数据和变量之间关系的好方法,但最近我一直想知道我缺少哪些可视化技术.您认为最不充分利用的情节是什么?
答案应该:
Sha*_*ane 88
我真的同意其他海报:Tufte的书非常棒,非常值得一读.
首先,我会在今年早些时候向您介绍一个关于ggplot2和ggobi的非常好的教程.除此之外,我只是强调R中的一个可视化,以及两个图形包(它们不像基本图形,网格或ggplot那样广泛使用):
热图
我非常喜欢可以处理多变量数据的可视化,尤其是时间序列数据. 热图对此非常有用.大卫·史密斯在革命博客上发表了一篇非常简洁的文章.这是ggplot代码由Hadley提供:
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)
Run Code Online (Sandbox Code Playgroud)
最终看起来有点像这样:
RGL:交互式3D图形
另一个非常值得学习的软件包是RGL,它可以轻松提供创建交互式3D图形的功能.网上有很多例子(包括在rgl文档中).
R-Wiki有一个很好的例子,说明如何使用rgl绘制3D散点图.
GGobi
另一个值得了解的包是rggobi.有关于这个主题的Springer书籍,以及许多在线文档/示例,包括"查看数据"课程.
dou*_*oug 56
使用极坐标的情节肯定未被充分利用 - 有些人会说有充分理由.我认为证明其使用合理性的情况并不常见; 我还认为,当这些情况出现时,极坐标图可以揭示线性图不能的数据模式.
我认为这是因为有时你的数据本质上是极性的而不是线性的 - 例如,它是周期性的(x坐标表示多天24小时内的时间),或者数据先前被映射到极性特征空间.
这是一个例子.此图显示了网站按小时计算的平均流量.请注意晚上10点和凌晨1点的两个尖峰.对于本网站的网络工程师来说,这些是重要的; 它们也很重要,它们彼此相邻(仅相隔两个小时).但是如果你在传统的坐标系上绘制相同的数据,这个模式将被完全隐藏 - 线性绘制,这两个尖峰将相隔20小时,虽然它们在连续几天也只相差两小时.上面的极坐标图以简洁直观的方式显示了这一点(传说不是必需的).

有两种方法(我知道)使用R创建这样的图(我在上面用w创建了图).一种是在基本或网格图形系统中编写自己的函数.换句话说,更容易的是使用圆形包装.你将使用的函数是' 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)
Run Code Online (Sandbox Code Playgroud)
Ari*_*man 56
我真的很喜欢dotlot,并且当我向其他人推荐它们以获得适当的数据问题时,他们总是感到惊讶和高兴.它们似乎没有多大用处,我无法弄清楚原因.
这是Quick-R的一个例子:

我相信克利夫兰对这些的发展和发布负有最大的责任,他的书中的例子(使用点图很容易检测到错误的数据)是他们使用的有力论据.请注意,上面的示例每行仅放置一个点,而它们的实际功率来自每行上有多个点,并附有一个图例说明哪个是哪个.例如,您可以在三个不同的时间点使用不同的符号或颜色,从而轻松了解不同类别的时间模式.
在下面的示例中(在所有内容的Excel中完成!),您可以清楚地看到标签交换可能遇到的类别.

nul*_*lob 54
如果您的散点图有很多点,它会变得完全混乱,请尝试使用平滑的散点图.这是一个例子:
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
Run Code Online (Sandbox Code Playgroud)
该hexbin软件包(由@Dirk Eddelbuettel建议)用于相同的目的,但smoothScatter()具有属于graphics软件包的优点,因此是标准R安装的一部分.

Dir*_*tel 30
关于sparkline和其他Tufte的想法,CRAN上的YaleToolkit包提供了功能和. sparklinesparklines
另一个对大型数据集有用的软件包是hexbin,因为它巧妙地将数据"分类"到桶中以处理可能对于天真的散点图来说太大的数据集.
Sha*_*ane 25
我刚刚回顾的另一个不错的时间序列可视化是"凹凸图表"(正如"学习R"博客上的这篇文章所述).这对于可视化位置随时间的变化非常有用.
您可以在http://learnr.wordpress.com/上阅读有关如何创建它的信息,但最终结果如下:

Ari*_*man 20
我也喜欢Tufte对箱形图的修改,这使得你可以更容易地进行小倍数比较,因为它们在水平方向非常"薄"并且不会使用多余墨水使图形混乱.但是,它适用于相当多的类别; 如果你只是在情节上有一些,那么常规(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
)
Run Code Online (Sandbox Code Playgroud)

在这个问题中讨论了制作这些的其他方法(包括其他类型的Tufte箱图).
Gee*_*cid 18
我们不应该忘记可爱和(历史上)重要的茎叶情节(Tufte也喜欢!).您可以直接获得数据密度和形状的数值概览(当然,如果您的数据集不大于约200个点).在R中,该函数stem产生您的茎叶展开(在工作区中).我更喜欢使用gstempackage fmsb中的函数直接在图形设备中绘制它.以下是逐个叶子显示的海狸体温变化(数据应该在您的默认数据集中):
require(fmsb)
gstem(beaver1$temp)
Run Code Online (Sandbox Code Playgroud)

mbq*_*mbq 14
盒形图!R帮助示例:
boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
Run Code Online (Sandbox Code Playgroud)
在我看来,这是快速查看数据或比较分布的最方便的方法.对于更复杂的发行版,有一个名为的扩展名vioplot.
Pet*_*ica 11
在我看来,马赛克图符合所提到的所有四个标准.r中有一些例子,在马赛克图下.
Pau*_*sik 10
看看Edward Tufte的作品,尤其是这本书
您也可以尝试捕捉他的旅行演示文稿.它非常好,包括他的四本书.(我发誓我不拥有他的出版商的股票!)
顺便说一句,我喜欢他的迷你数据可视化技术.惊喜!Google已经将其编写并将其发布在Google Code上