使用以下代码,xlab将是粗体但是ylab不是.请你帮助我好吗
pdf()
par(font.axis=2, font.lab=2, cex.lab=1.2, cex.axis=1.2, cex.sub=1.2,
mfrow=c(2,2), mar = c(5,6,3,1) + 0.1)
hist(ADAM, axes=F, main="", ylim=c(0,1000000), xlab="",
ylab= expression(paste("number(",x10^6,")",sep="")))
axis(1,at=seq(0,1,0.2), labels=seq(0,1,0.2))
axis(2, at=seq(0,1000000,500000), labels=seq(0,1, by=0.5), las=2)
dev.off()
Run Code Online (Sandbox Code Playgroud)
谢谢
这是这个问题的后续问题: 如何在`bquote`表达式中使用`text`?
但现在我把它放在一个传奇中,这似乎改变了事情.
我尝试了以下方法:
test<-c(10:1)
dummy1<-0.004323423
dummy2<-0.054
dummy3<-0.032
plot(test,c(1:10))
legend("topright",
legend=c(bquote(Qua_0,99^normal == .(round(dummy1,4))),bquote(Qua_0,95^normal == .(round(dummy2,4))),bquote(Qua_0,99^t == .(round(dummy3,4)))),
bty = "n",lwd=2, cex=1, col=c("red","black","darkgreen"), lty=c(1,3,5))
Run Code Online (Sandbox Code Playgroud)
所以,我想拥有
表达式正确,因此正确写入了索引0,95以及幂^ correclty
等号后的换行符
彩色文字,与lign相同,所以第一个是红色的
我试图实现现有帖子的答案,但我没有想出来,顶部也没有用.
示例代码:
rsq <- round(cor(mtcars$disp, mtcars$mpg)^2, 2) # rsq = 0.72
ggplot(mtcars, aes(x = disp, y = mpg)) +
geom_point() +
geom_smooth(method = lm, aes(color = "Linear")) +
scale_color_discrete(labels = expression(paste("R"^2, " = ", rsq)))
Run Code Online (Sandbox Code Playgroud)
我希望将图例显示为R² = 0.72.
我知道我可以使用unicode符号来获取上标,但总的来说我认为必须有一种方法来组合数学表达式和存储在对象中的计算值.
我试图玩eval和各种组合paste,但似乎我一直在遇到同样的问题.
编辑#1:
我试着使用bquote按照这个答案是这样的:
scale_color_discrete(labels = bquote(R^2 == .(rsq)))
原来只会将图例渲染为==.
编辑#2:
即使下面的答案有效,似乎......对于更复杂的表达式来说非常不方便,比如:

我仍然希望有一个更简单的解决方案.
我试图在我的情节中使用女性符号♀.它非常微弱(嗯,它在我的实际图形上看起来很微弱),所以我希望能让它变得大胆.
df <- data.frame(x = c(0, 1), y = c(0, 1))
ggplot(df, aes(x, y)) + geom_point() +
theme_bw() +
annotate("text", x = 0.5, y = 0.7, label = "2016 ?",
size = 7, hjust = 0, colour = "grey50")
Run Code Online (Sandbox Code Playgroud)
我尝试了以下,但似乎没有工作:
ggplot(df, aes(x, y)) + geom_point() +
annotate("text", x = 0.5, y = 0.7, label = "2016~bold(?)",
size = 7, hjust = 0, parse = TRUE)
# error message: Error in parse(text = as.character(lab)) : <text>:1:11: unexpected '<'
#1: 2016~bold(<
^ …Run Code Online (Sandbox Code Playgroud) 我正在使用下面的代码生成一个简单的箱线图ggplot2:
# Libs data
data("mtcars"); require(ggplot2); require(ggthemes)
# Chart
ggplot(data = mtcars) +
geom_boxplot(aes(y = wt, x = as.factor(am)),
fill = "gray87") +
xlab("AM") +
ylab("WT") +
theme_gdocs() +
ggtitle("WT by AM") +
theme(axis.title.y = element_text(angle = 90),
axis.ticks = element_line(colour = "black", linetype = "solid",
size = 0.5),
panel.grid = element_line(colour = "gray"))
Run Code Online (Sandbox Code Playgroud)
我想为我的图表添加一个副标题,并对它的呈现方式进行一些控制。我正在关注此讨论并使用代码:
# Chart
ggplot(data = mtcars) +
geom_boxplot(aes(y = wt, x = as.factor(am)),
fill = "gray87") +
xlab("AM") +
ylab("WT") …Run Code Online (Sandbox Code Playgroud) 我想使用 ggplot 动态更改轴标签。下面的代码是我想要做的事情的简单版本。它在 y 轴上正确显示度数符号。注释掉的 ylab 代码行是我想做的但失败了。我想创建绘图代码,将其分配给一个变量(例如 yLabel),然后让 ggplot 解释它。
library(data.table)
library(ggplot2)
DT <- data.table(timeStamp=c(1:12), ColN1=runif(12, 0, 10))
DT.long <- data.table::melt(
DT, id.vars = c("timeStamp"))
yLabel <- "Temperature~(~degree~F)"
yLabel1 <- expression("Temperature~(~degree~F)")
p <- ggplot(data = DT.long, aes(x = timeStamp, y = value)) +
xlab("Time") +
# ylab( expression(paste("Value is ", yLabel,","))) +
# ylab(yLabel) +
# ylab(yLabel1) +
ylab(Temperature~(~degree~F)) +
scale_y_continuous() +
theme_bw() +
geom_line()
print(p)
Run Code Online (Sandbox Code Playgroud) 我expression()在我的绘图的 x 轴标签中使用在我的度量名称上创建一个平方根符号,以指示数据已使用平方根转换进行了转换。但是,我的度量名称(“CES-D”)中有一个连字符。当我把它写在 中时expression(),连字符变成一个减号或短划线字符,周围有空格。
qplot(1:10, 1:10) +
labs(x = expression(sqrt(CES-D~scores)),
y = "CES-D scores")
Run Code Online (Sandbox Code Playgroud)
请注意,x 轴和 y 轴标签中的连字符是不同的。在 x 轴标签中,它看起来像“CES 减去 D 分数”的平方根。
如何在expression()for 文本中创建常规连字符?
下面是我编写的复杂自定义函数的一个简单得多的示例。在这个函数的全长形式中,
"layer1"对应于caption用户输入, "layer2"
对应于统计测试的结果,并且 "layer3"
对应于有关执行的统计测试的详细信息。但是当所有三层都包含在标题中时,它看起来像这样 -
library(ggplot2)
ggplot(iris, aes(Species, Sepal.Length)) +
geom_boxplot() +
labs(caption = substitute(atop(substitute(
atop("layer1", "layer2")
)
, "layer3")))
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v0.2.1)于 2018 年 11 月 9 日创建
所以我想找出一种方法可以使所有三层的文本大小保持不变。我实际上不确定为什么在这种情况下文本大小会自动更改。
有什么办法可以防止这种情况发生吗?
这是我上一个问题的第 2 部分(在 r 中使用 atop 函数时获得恒定的文本大小)。
现在问题涉及如何防止plotmath文本居中以避免额外的间距(此处以黄色突出显示)。我希望所有内容都与情节的右侧对齐。
(不幸的是,我不能代替substitute用expression如果这就是您的建议将是。)
有什么建议?
library(ggplot2)
ggplot(iris, aes(Species, Sepal.Length)) +
geom_boxplot() +
labs(caption = substitute(atop(
atop(
displaystyle("layer1 is small"),
displaystyle("layer2 is a bit longer")
),
"layer3 is super-duper longgggggggg"
)))
Run Code Online (Sandbox Code Playgroud)
如果我使用 来创建地图geom_sf,轴标签的度数符号是错误的。我得到的度数符号在文本中垂直居中,而不是像上标一样凸起。
例如,
library(sf)
library(ggplot2)
nc = st_read(system.file("shape/nc.shp", package="sf"))
ggplot() +
geom_sf(data = nc) +
theme(axis.text = element_text(size=16))
Run Code Online (Sandbox Code Playgroud)
当我在网上看到示例时,它们通常看起来是正确的(例如下图,从这里复制),所以我猜这与我本地设置中的某些内容有关。
我曾尝试更改字体,使用library(extrafont)但这个问题仍然存在于我尝试的每种字体中。
我不认为这是一个特定ggplot-问题,因为我得到同样的事情与使用任何图形degree关键字plotmath。例如
par(mar=c(0,0,0,0))
plot.new()
text(0.5,0.5, bquote(120*degree*N), cex=5)
Run Code Online (Sandbox Code Playgroud)
我在Linux(Kubuntu 19.04), R3.5.2, ggplot2v. 3.2.1, sfv. 0.7-7。不确定还有哪些其他信息可能相关,但我可以用其他任何要求更新答案。