我可以在ggplot注释中使用标记吗?
让我们说,我有这张图:
p <- function(i) 8*i
a <- function(i) 1+4*i*(i-1)
library(ggplot2)
library(reshape2)
i <- 1:(8*365/7)
d <- data.frame(i=i,p=p(i),a=sapply(i,a))
d <- melt(d, id.vars='i')
p <- ggplot(d, aes(i, value, linetype=variable)) +
geom_hline(yintercept=700^2) +
geom_line() +
scale_linetype_manual(values=c(2,1)) +
#geom_point() +
scale_x_continuous(breaks=(0:20)*365/7, labels=0:20) +
#scale_y_continuous(breaks=c(0,700^2), labels=c(0,expression(L^2)))
scale_y_sqrt() +
#scale_y_log10() +
annotate('text', 8*365/7, 1e3, label="P(i)=8i", hjust=1, size=3) +
annotate('text', 8*365/7, 2.5e5, label="A(i)=1+4i(i-1)", hjust=1, size=3)
print(p + theme_classic())
我知道我可以使用 fontface = 3 并将所有内容都用斜体显示。但我不希望数字用斜体表示,只需要变量i
。优选地,P
和A
不也是斜体。
有什么想法吗?
答案 0 :(得分:13)
使用parse=TRUE
并提供根据?plotmath
格式化的字符串。
p <- ggplot(d, aes(i, value, linetype=variable)) +
geom_hline(yintercept=700^2) +
geom_line() +
scale_linetype_manual(values=c(2,1)) +
scale_x_continuous(breaks=(0:20)*365/7, labels=0:20) +
scale_y_sqrt() +
annotate('text', 8*365/7, 1e3,
label="P(italic(i))==8~italic(i)", parse=TRUE,
hjust=1, size=3) +
annotate('text', 8*365/7, 2.5e5,
label="A(italic(i))==1+4~italic(i)(italic(i)-1)", parse=TRUE,
hjust=1, size=3)
答案 1 :(得分:13)
现在,此页面是google上 ggplot annotate italic 的热门搜索结果。为了那些只想使整个注释变为斜体的人的利益,我写了这篇文章。使用注释fontface
选项。例如:
seq(0,3.14,0.01)
qplot(x, sin(x)) + # works the same for qplot or ggplot
annotate(geom = 'text',
x = 1.5,
y = 0.5,
hjust = 0.5,
label = 'Hello, World',
fontface = 'italic')
答案 2 :(得分:4)
最好的评分答案很好,但在更复杂的情况下使用换行符它对我不起作用,所以我只是使用Unicode斜体字符。以你的例子:
Traceback (most recent call last):
File "performRecognition.py", line 43, in <module>
nbr = clf.predict(np.array([roi_hog_fd], 'float64'))
File "/usr/local/lib/python2.7/dist-packages/sklearn/linear_model/base.py", line 341, in predict
return self.classes_[indices]
AttributeError: 'LinearSVC' object has no attribute 'classes_'
编辑:我刚刚注意到用pdf()doest保存pdf不能正确渲染unicode,但你可以简单地使用cairo_pdf(),这很好用(参见:Unicode Characters in ggplot2 PDF Output)
答案 3 :(得分:0)
对于简单的文本格式,请使用ggtext包
如果您不定期使用plotmath,并发现使用简单的markdown / html样式文本格式更容易-请使用最近添加的ggtext package
在此处添加对较新的ggtext
包的引用-即使该示例比OP问题(@pbnelson行更简单)
library(ggplot2)
library(ggtext)
#> Warning: package 'ggtext' was built under R version 4.0.3
library(tibble)
#> Warning: package 'tibble' was built under R version 4.0.3
dfx <- tibble(x=seq(0,3.14,0.01))
ggplot(dfx, aes(x, sin(x))) +
geom_line() + # works the same for qplot or ggplot
geom_richtext(x = 1.5,
y = 0.5,
label.color = NA,
label = "<i><b>Hello</i></b>, World<br>You can even do
Some <span style='color:blue'>blue text **in bold.**</span><br>And *italics text.*"
)
由reprex package(v0.3.0)于2020-12-17创建