【发布时间】:2014-09-20 18:38:37
【问题描述】:
(见帖子底部的更新)
首发,2014-07-29 11:43:38Z
我在the Economist's website 上看到了这个图形,想知道是否有可能制作一个嵌入这种说明性图标的geom_bar()? (下面的虚拟数据)
虚拟数据,
require(ggplot2)
# Generate data
df3 <- data.frame(units = c(1.3, 1.8, 2.7, 4.2, 4.7, 6.7, 20),
what = c('Wikipedia', 'London Olympic Park', 'Aircraft carrier',
'The Great Pyramid', 'Stonehenge', 'Burj Khalifas',
'Empire State Building'))
# make gs an ordered factor
df3$what <- factor(df3$what, levels = df3$what, ordered = TRUE)
#plots
ggplot(df3, aes(what, units)) + geom_bar(fill="white", colour="darkgreen",
alpha=0.5, stat="identity") + coord_flip() + scale_x_discrete() +
scale_y_continuous(breaks=seq(0, 20, 2)) + theme_bw() +
theme(axis.title.x = element_blank(), axis.title.y = element_blank())
更新 #1,2014-07-29 15:07:51Z
显然Robert Grant 已经开始构建一个 R 函数来生成带有象形图的条形图it can be found at Github。感谢Andrie 提供这些信息。我目前正在努力查看 Robert 的功能是否可以满足我的需求。
如果您对如何使用 Robert's function 回答我的问题有任何建议,请加入。
更新 #2,2014-08-02 12:35:19Z
这里是Grant's R-pictogram-function work的简单说明
# in case you don't alredy have RCurl
# install.packages("RCurl", dependencies = TRUE)
source_github <- function(u) {
# load package
require(RCurl)
# read script lines from website and evaluate
script <- getURL(u, ssl.verifypeer = FALSE)
eval(parse(text = script),envir=.GlobalEnv)
}
得到这个脚本form this SO answer
source_github("https://raw.githubusercontent.com/robertgrant/pictogram/master/pictogram.R")
# install.packages("png", dependencies = TRUE)
require(png)
img <- readPNG(system.file("img", "Rlogo.png", package="png"))
pictogram(icon = img, n = c( 12, 35, 7),
grouplabels=c("12 R logos","35 R logos","7 R logos"))
这给了你这样的情节
【问题讨论】:
-
它被称为象形图。谷歌搜索会给出很多结果,包括这个:r-bloggers.com/easy-pictograms-using-r
-
谢谢,我会调查的。
-
看看gridExtra中的rpatternGrob;代码很丑,但目的和你的要求差不多。
-
我相信 gridSVG 包的作者已经提出了一些想法来调整(后处理)svg 文件。 SVG 原生支持剪切和填充模式,我认为这将是一种更优雅的方法。
-
@baptiste,听起来很有趣,谢谢。我现在正在查看the gridSVG Reference manual(PDF!)。
标签: r ggplot2 icons bar-chart data-visualization