最近出现了ggplot2的一些巧妙用途,并且已发布部分或完整解决方案:
ggheat是值得注意的,因为它只是通过绘制而不是返回一个对象来打破ggplot隐喻.
大括号解决方案值得注意,因为没有一个真正符合ggplot2高级概念(例如,您应该指定一系列您想要打破的点,然后在其他地方能够指定您希望该范围显示的方式 - - 支架,盒子,紫牛等).
该GGPLOT2书(我很快就会订购并已阅读2个网络章节)似乎是有关使用语法和功能,而不是写新的或广泛延伸现有的.
我想学习添加一个特定的功能或开发一个新的geom,并正确地做到这一点. ggplot2可能不会像基本图形一样用作通用图形包grid,但是有很多图表只是现有ggplot2 geom的一步或两步扩展.当这些情况出现时,我通常可以将足够的物体放在一起做一次,但如果我需要几十次相同的情节呢?如果其他人喜欢它并且想要使用它会怎么样 - 现在他们每次想要那个图表时都必须通过相同的过程进行处理.这在我看来,正确的解决办法是在加stat_heatplot和geom_heatplot,或者添加geom_Tuftebox为塔夫特箱线图,等等.但是我从来没有见过的真正延伸GGPLOT2的例子.只是如何使用它的例子.
有哪些资源可以深入挖掘ggplot2并开始扩展它?我特别感兴趣的是如上所述在轴上指定范围的高级方法,但是关于ggplot2 tick的内容的一般知识也是受欢迎的.
没有一个连贯的指南(很少有足够先进的修补,因此可能不存在),如何去学习内部?检查源显然是一种方式,但开始的功能,等等.
所以这与这个问题非常相关,这个答案是一个很好的解决方案.问题是当我尝试使用ggsave导出绘图时,花括号不存在.
例:
library(ggplot2)
library(grid)
library(pBrackets)
x <- c(runif(10),runif(10)+2)
y <- c(runif(10),runif(10)+2)
the_plot <- qplot(x=x,y=y) +
scale_x_continuous("",breaks=c(.5,2.5),labels=c("Low types","High types") ) +
theme(axis.ticks = element_blank(),
axis.ticks.length = unit(.85, "cm"))
the_plot
grid.locator(unit="native")
bottom_y <- 284
grid.brackets(220, bottom_y, 80, bottom_y, lwd=2, col="red")
grid.brackets(600, bottom_y, 440, bottom_y, lwd=2, col="red")
ggsave("test.png",width = 4, height = 2.5)
Run Code Online (Sandbox Code Playgroud)
我没有打开使用RStudio导出按钮,因为它没有正确导出我的主题字体大小等.我还需要比76 dpi更高的分辨率.我需要一个解决方案来添加花括号到ggplot2图形,并能够使用ggsave保存它.
我正在使用ggplot的geom_tile做一个因子面对的2-D密度图.每个方面的比例从所有数据的最小值到所有数据的最大值,但每个方面中的geom_tile仅扩展到该方面中绘制的数据范围.
演示此问题的示例代码:
library(ggplot2)
data.unlimited <- data.frame(x=rnorm(500), y=rnorm(500))
data.limited <- subset(data.frame(x=rnorm(500), y=rnorm(500)), x<1 & y<1 & x>-1 & y>-1)
mydata <- rbind(data.frame(groupvar="unlimited", data.unlimited),
data.frame(groupvar="limited", data.limited))
ggplot(mydata) +
aes(x=x,y=y) +
stat_density2d(geom="tile", aes(fill = ..density..), contour = FALSE) +
facet_wrap(~ groupvar)
Run Code Online (Sandbox Code Playgroud)
运行代码,您将看到两个方面.一个方面显示"无限"随机正态分布的密度图.第二个方面显示一个随机法线截断,位于原点周围的2x2方格内."有限"刻面中的几何体将被限制在这个小盒子内,而不是填充刻面.
last_plot() +
scale_x_continuous(limits=c(-5,5)) +
scale_y_continuous(limits=c(-5,5))
Run Code Online (Sandbox Code Playgroud)

最后三行绘制了具有指定x和y限制的相同数据,并且我们看到在这种情况下,两个facet都没有将tile部分扩展到边缘.
有没有办法强制每个方面的geom_tile延伸到facet的整个范围?
这部分与我昨天的问题有关.
所以这里是数据和ggplot2中创建的图.
df = data.frame(date=c(rep(2008:2013, by=1)),
value=c(303,407,538,696,881,1094))
ggplot(df, aes(date, value, width=0.64)) +
geom_bar(stat = "identity", fill="#336699", colour="black") +
ylim(c(0,1400)) + opts(title="U.S. Smartphone Users") +
opts(axis.text.y=theme_text(family="sans", face="bold")) +
opts(axis.text.x=theme_text(family="sans", face="bold")) +
opts(plot.title = theme_text(size=14, face="bold")) +
xlab("Year") + ylab("Users (in millions)") +
opts(axis.title.x=theme_text(family="sans")) +
opts(axis.title.y=theme_text(family="sans", angle=90)) +
geom_segment(aes(x=2007.6, xend=2013, y=550, yend=1350), arrow=arrow(length=unit(0.4,"cm")))
Run Code Online (Sandbox Code Playgroud)
是否可以使用ggplot2在下图中生成squigly趋势线
我在R中创建了绘图,然后在Adobe Photoshop中对其进行了修饰,我想知道是否可以在R中直接生成那条波浪形的趋势线.
如果在ggplot2中无法做到这一点,是否有任何特定的R包可以接受此任务?
我不是要求重现图表.那不是问题.只是产生趋势线似乎是一个问题.
