我想沿水平轴显示月份(缩写形式),相应的年份打印一次.我知道如何显示月份:
今年不需要的重复使标签变得混乱.相反,我想要这样的事情:
除了年份将 在月份以下打印.
我在轴标签上方打印了一年,因为这是我能做的最好的.这遵循annotate()函数的限制,如果它位于绘图区域之外,则会被剪裁.我知道可能的解决方法基于annotate_custom(),但我无法使它们与日期对象一起工作(我没有尝试将日期转换为数字并再次返回日期,因为它似乎比希望必要更复杂)
我想知道新的dup_axis()是否可以为此目的而被劫持.如果不是将复制的轴发送到面板的另一侧,它可以在复制的轴下面发送几行,那么可能只是设置一个轴被panel.grid.major清空并且标签设置为%b,而另一个轴将panel.grid.minor消隐,标签设置为%Y.(另外一个挑战是年标签将转移到10月而不是1月)
这些问题是相关的.但是,就我所知,annotate_custom()功能和textGrob()功能与日期不相符.
数据和基本代码如下:
library("ggplot2")
library("scales")
ggplot(data = df, aes(x = Date, y = value)) + geom_line() +
scale_x_date(date_breaks = "2 month", date_minor_breaks = "1 month", labels = date_format("%b %Y")) +
xlab(NULL)
ggplot(data = df, aes(x = Date, y = value)) + geom_line() +
scale_x_date(date_minor_breaks = "2 month", labels = date_format("%b")) +
annotate(geom = …Run Code Online (Sandbox Code Playgroud) 我用ggplot2创建了这个情节:

外线需要对应Y刻度(即Text1的线的Y位置应为100和85).我可以通过在条形图右侧绘制一个空白绘图并使用与条形图相同的比例然后使用注释函数绘制线来实现此目的.另一种方法是简单地"手动"绘制线条grid.lines,但是坐标grid.lines不对应于图形的Y标度.
是否有可能以某种方式使用不同的方法绘制这些线?我认为必须完成它grid.lines.我怎么能把条形图的Y coordindates传递给grid.lines?
下面是用于创建此图的最小代码:
library (ggplot2)
test= data.frame(
group=c(rep(1,6), rep(2,6)),
subgroup=c( 1,1,1,2,2,2,1,1,1,2,2,2),
category=c( rep(1:3, 4)),
count=c( 10,80,10,5,90,5, 10,80,10,5,90,5 )
)
qplot(subgroup,
count,
data=test,
geom="bar",
stat="identity",
fill =category,
facets = .~ group, width=0.9)+
opts(legend.position="none",
plot.margin = unit(c(0,9,2,0), "lines"))
Run Code Online (Sandbox Code Playgroud)

如何画出条形图右侧的线条?
我最近在ggplot2中问了一个关于在绘图区域之外绘制文本的问题,解决方案是使用gt$layout和grid.draw.
可以在这里使用类似的方法吗?据我所知,annotation_custom仅适用于文本,不适用于其他图形元素.谢谢
我最近在"经济学人"中看到了一个折线图,其中标题的颜色与匹配折线图中使用的组的颜色相匹配.我想知道如何使用ggplot2对象执行此操作.下面是一些代码,用于制作包含所有内容的折线图,例如标题中除了彩色字之外的经济学文章.在底部,我显示了所需的输出.
这个问题不是关于显示此信息的理论方法(如直接标记或图例),而是专门用于着色标题中的单个单词.
data <- data.frame(
group = rep(c('affluence', 'poverty'), each = 6),
year = rep(c(1970, 1980, 1990, 2000, 2010, 2012), 2),
concentration = c(.125, .12, .14, .13, .145, .146, .068, .09, .125, .119, .13, .135)
)
library(ggplot2)
ggplot(data, aes(year, concentration, color = group)) +
geom_line(size = 1.5) +
geom_point(size = 4) +
scale_y_continuous(limits = c(0, .15)) +
labs(
x = NULL, y = NULL,
title = 'Concentration of affluence and poverty nationwide'
) +
theme_minimal() +
theme(
legend.position …Run Code Online (Sandbox Code Playgroud) 我正在绘制一个时间序列,其响应变量的平均值为月(x轴)的点(y轴).
位于x轴上的值(即0值)被剪裁.我可以改变y轴的极限以包括一些低于0的填充,但我不愿意.
有没有办法在x轴的前面或顶部绘制这些0点?
我想创建一个条形图,使用ggplot2躲避组和轴标签的条形图(男性,女性)和组(研究1,研究2 ...).以下是我希望我的图表显示的方式:

还有一些R代码.在这种情况下,仅在轴上标记组(而不是组内的条).轴上的条形标签基本上取代了图例.
x = runif(8)
gender = factor(c("male","female","male","female","male","female","male","female"))
group = c(0,0,1,1,2,2,3,3)
df = data.frame(x,gender,group)
ggplot(df,aes(x=group,y=x,fill=gender)) +
geom_bar(stat="identity",position="dodge") +
scale_x_continuous("",breaks=c(0:3),
labels=c('G1','G2','G3','G4'))
Run Code Online (Sandbox Code Playgroud)

由于数据的隐私性,我使用mtcar数据集ggplot2来解释我的问题.
有四个图:
g1 <- ggplot(mtcars,aes(mpg,wt)) + geom_point()
g2 <- ggplot(mtcars,aes(mpg,disp)) + geom_point()
g3 <- ggplot(mtcars,aes(mpg,drat)) + geom_point()
g4 <- ggplot(mtcars,aes(mpg,qsec)) + geom_point()
Run Code Online (Sandbox Code Playgroud)
我想把这四个图放在一个图中,所以我grid.arrange()在包中使用函数grid.Extra:
grid.arrange(g1,g2,g3,g4,ncol=2)
Run Code Online (Sandbox Code Playgroud)
现在,我想在这些图中的每个图下面添加标题,如下图所示(我在Word中修改它,所以它不漂亮)
在询问之前,我已经搜索过SO,并且我知道如何在一个绘图下添加标题,例如,使用grid.text()或这三种方法 在ggplot2生成的绘图下方显示文本,或者element_text(vjust=-10)我不能将其应用于一个图中的四个绘图.同时,我在基础图中得到了一些结果如何为R中的每个图添加标题?或者使用par(mfrow)编译的数字面板的公共主标题,qustion是我想要进行ggplot2并且标题在每个情节下面,我该如何实现它?谢谢!
我是R包EnvStats的创建者.
有一个我经常使用的函数叫做stripChart.我刚刚开始学习ggplot2,过去几天一直在研究哈德利的书,温斯顿的书,StackOverflow和其他资源,试图创造一个geom近似于它的东西stripChart.我无法弄清楚如何geom计算汇总统计数据和测试结果,然后将它们放在x轴刻度线下方以及绘图顶部(绘图区域外).以下是使用内置数据集的简单示例mtcars:
library(EnvStats)
stripChart(mpg ~ cyl, data = mtcars, col = 1:3,
xlab = "Number of Cylinders", ylab = "Miles per Gallon", p.value = TRUE)
Run Code Online (Sandbox Code Playgroud)
以下是尝试重现stripChart的大部分功能的geom的早期草稿:
geom_stripchart <-
function(..., x.nudge = 0.3,
jitter.params = list(width = 0.3, height = 0),
mean.params = list(size = 2, position = position_nudge(x = x.nudge)),
errorbar.params = list(size = 1, width = 0.1,
position = position_nudge(x = x.nudge)),
n.text = TRUE, …Run Code Online (Sandbox Code Playgroud) 我在 ggplot2 中创建了两个方面图。我想在绘图区域外添加一个箭头。多个问题试图解决这个问题: How to draw lines out of plot area in ggplot2? 在 ggplot2 生成的图下方显示文本
但我不能让我的例子工作。另外,我希望有一种更简单的方法来实现这一点?
我试图增加plot.margins和使用coord_cartesian(),但都没有帮助。
相反,我想要:
我的虚拟示例:
# read library to assess free data
library(reshape2)
library(ggplot2)
ggplot(tips,
aes(x=total_bill,
y=tip/total_bill)) +
geom_point(shape=1) +
facet_grid(. ~ sex) +
# define the segment outside the plot
geom_segment(aes(x = 10,
y = -0.25,
xend = 10,
yend = 0),
col = "red",
arrow = arrow(length = unit(0.3, "cm"))) +
theme_bw() +
# limit the displayed plot extent …Run Code Online (Sandbox Code Playgroud) 如何在奇数编号的刻面ggplot中的空白区域中注释一些文本.让我们有一个刻面的ggplot,数据如下,有2行和2列.所以有2行,第2列的空白区域.
df<- data.frame(Ara = rep("XTX", each = 3),
Len = c(744, 750, 755),
Mon = c("Sep", "Oct","Nov"),
Value=c(11.224,10.15,4.23))
df
facetplot<-ggplot(df, aes(x=Value, y=Len, shape=Ara))+
geom_point(size=5.0)+
theme(legend.position = c(.7, .4), legend.direction="vertical")+
facet_wrap(~Mon,scales="free_x", nrow=2)
facetplot
Run Code Online (Sandbox Code Playgroud)
现在我试图在空间中注释一些文本但不能(在图像中用红色书写).我正在寻找类似于legend.position的注释文本.有没有人对此有任何想法.或者可能的工作是什么.谢谢.
我需要找到一种在文字下方1英寸处放置文字的方法.即使我更改了绘图的边距或使用不同的数据,我也需要将该文本放在绘图下方1英寸处.我一直在调用带有修改的x和y值的网格文本,但我想要一些能够适应ggplot维度的东西.另一种方法是使用grobs(参见相关文章),但这需要根据数据设置Y位置.
这是基本代码:
library(ggplot2)
test= data.frame(
x = c(1:10 ),
y = c(1:10)
)
qplot(x=x, y=y, data=test)+
opts(plot.margin = unit(c(1,3,8,1), "lines")) +
geom_line()
Run Code Online (Sandbox Code Playgroud)

谢谢.
即时创建ggplot与geom_vline在x轴上的特定位置.我希望x轴显示特定值
以下是我的数据+代码:
dput(agg_data)
structure(list(latency = structure(c(0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 24, 26, 28,
29, 32, 36, 37, 40, 43, 46, 47, 48, 49, 54, 64, 71, 72, 75, 87,
88, 89, 93, 134, 151), class = "difftime", units = "days"), count = c(362,
11, 8, 5, 4, 2, 8, 6, 4, 2, 2, 1, 5, 1, 2, 2, 2, 1, …Run Code Online (Sandbox Code Playgroud) 假设我们有这个简单的情节:
ggplot(data = msleep, aes(x = log(bodywt), y = sleep_total)) +
geom_point(aes(color = vore)) +
theme(legend.position="bottom")
Run Code Online (Sandbox Code Playgroud)

是否可以在图例项下添加文本?我知道如何在图例中添加标题(上图).但是,我想说我想要下面写的其他一般信息.
很高兴找到解决方案.
谢谢!马丁