我在尝试着
在gglot图例标签内.
我已经尝试了几种方法,但我似乎无法将我读到的所有技巧结合起来.
我可以通过插入\n
标签来获得换行符,但这似乎不适用于希腊字母,而不适用于图例标签.或者我可以在基础图中通过组合mtext()
和bquote()
插入一段文本(EDIT)来设置换行符和希腊字母,但正如Gregor在评论部分中指出的那样,这不起作用ggplot
.下面我结合list
使用paste0()
to将文本传递给图例标签:问题是我找不到插入希腊字母的方法,例如gamma.
感谢你的建议.
这是我的一次尝试的MWE (编辑:改进的MWE):
label1.line1 <- "Not much to say about this one"
label2.line1 <- "blabla blabla, blabla blabla, blee blee blee (bling, bling, bling),"
label2.line2 <- paste0("(", "1900-2014: g = 1.50%, gamma = 2.75%, and r = 2.30%",")")
label3.line1 <- "blabla blabla, blabla blabla, blee blee blee (bling, bling, bling),"
label3.line2 <- paste0("(", "1900-2014: g = 2.50%, gamma = 1.75%, and r = 2.30%",")")
labels_fixed <- list(
label1.line1,
paste0(label2.line1, "\n", label2.line2),
paste0(label3.line1, "\n", label3.line2)
)
library(ggplot2)
library(scales)
library(grid) # provides unit() function used to tweak spacing inside legend
ggplot(data = mtcars, aes(x = mpg, y = wt, group = factor(cyl), colour = factor(cyl), shape = factor(cyl))) +
geom_line() + geom_point(size = 3) + theme_bw() +
scale_shape_manual(name = "Details", values = c(17, 21, 15),
labels = labels_fixed) +
scale_colour_manual(name = "Details", values = c("darkred", "darkgreen", "darkblue"),
labels = labels_fixed) +
theme(legend.key = element_blank(),
legend.position = c(.65, .8),
legend.background = element_rect(colour = "black"),
legend.key.size = unit(2, "lines"),
legend.text = element_text(size = 15))
Run Code Online (Sandbox Code Playgroud)
一个小问题是图例文本要小得多,因此需要调整图例行间距:我能够调整legend.key.size
并legend.text
获得比默认值更好的结果,这是非常狭窄的.
我还尝试了另一个涉及的建议cat(strwrap("long label here"), sep = "\n")
,但我无法让它发挥作用.我也试过atop
但是这使得每条线都太小而且实现所需堆叠所需的嵌套是繁琐的.
有没有办法得到希腊字母?
以下是一些我无法工作的有用建议,例如1和2中提到的组合mtext()
和bquote()
提及:
Pat*_*ckT 34
巴蒂斯特的建议很明显:unicode走了很长一段路.替换上面的每个gamma实例,\u03B3
它将显示为希腊语.惊人!
可以使用cairo
设备进行打印(参考):
library(Cairo)
cairo_pdf(file = "ggplot-greek.pdf", width = 8, height = 5)
## ggplot object created here
dev.off()
Run Code Online (Sandbox Code Playgroud)
还有效: ggsave("greek.pdf", device = cairo_pdf)
以下是我发现有用的unicode符号选择:
"\U016B" = ?
"\U016A" = ?
"\U00FB" = û
"\U00DB" = Û
"\U0233" = ?
"\U0232" = ?
"\U0177" = ?
"\U0176" = ?
"\U0113" = ?
"\U0112" = ?
"\u00EA" = ê
"\U00CA" = Ê
"\U003BC\U2080" = ??
"\U003BC\U2081" = ??
"R\U00B2" = R²
"\u221E" = ?
"\u2248" = ?
"\U2260" = ?
"\u03C3/\u221An" = ?/?n
Run Code Online (Sandbox Code Playgroud)
可悲的是,并非所有特殊字符都具有相同的unicode.例如,有一个用于y-hat的unicode,但没有用于x-hat的unicode.可以将字母x与unicode栏组合在一起,如在"x\u0305" = x?
或中"p\u0302" = p?
,但似乎打印效果不佳.
我也有过困难打印希腊Unicode作为轴标签,所以在这种情况下我使出annotate()
的选项coord_cartesian(clip = "off")
,以确保印刷轴下方的标签不会被切去("开"是默认的剪贴行为).
有时您可以直接使用该字符,例如:
myplot + labs(title = "±")
Run Code Online (Sandbox Code Playgroud)
当unicode失败时,您可以尝试expression()
,例如x?
:
title = expression(paste("z = (", bar(x), "-\u03BC)/(\u03C3/\u221An)", sep = ""))
library(ggplot2)
ggplot() + labs(title = title) + theme_bw()
Run Code Online (Sandbox Code Playgroud)
为方便起见,我在下面复制了一些常用的希腊字母'unicodes.可以找到更多的unicodes,例如http://en.wikipedia.org/wiki/List_of_Unicode_characters
\u0391 ? Greek Capital Letter Alpha
\u0392 ? Greek Capital Letter Beta
\u0393 ? Greek Capital Letter Gamma
\u0394 ? Greek Capital Letter Delta
\u0395 ? Greek Capital Letter Epsilon
\u0396 ? Greek Capital Letter Zeta
\u0397 ? Greek Capital Letter Eta
\u0398 ? Greek Capital Letter Theta
\u0399 ? Greek Capital Letter Iota
\u039A ? Greek Capital Letter Kappa
\u039B ? Greek Capital Letter Lambda
\u039C ? Greek Capital Letter Mu
\u039D ? Greek Capital Letter Nu
\u039E ? Greek Capital Letter Xi
\u039F ? Greek Capital Letter Omicron
\u03A0 ? Greek Capital Letter Pi
\u03A1 ? Greek Capital Letter Rho
\u03A3 ? Greek Capital Letter Sigma
\u03A4 ? Greek Capital Letter Tau
\u03A5 ? Greek Capital Letter Upsilon
\u03A6 ? Greek Capital Letter Phi
\u03A7 ? Greek Capital Letter Chi
\u03A8 ? Greek Capital Letter Psi
\u03A9 ? Greek Capital Letter Omega
\u03B1 ? Greek Small Letter alpha
\u03B2 ? Greek Small Letter beta
\u03B3 ? Greek Small Letter gamma
\u03B4 ? Greek Small Letter delta
\u03B5 ? Greek Small Letter epsilon
\u03B6 ? Greek Small Letter zeta
\u03B7 ? Greek Small Letter eta
\u03B8 ? Greek Small Letter theta
\u03B9 ? Greek Small Letter iota
\u03BA ? Greek Small Letter kappa
\u03BB ? Greek Small Letter lambda
\u03BC ? Greek Small Letter mu
\u03BD ? Greek Small Letter nu
\u03BE ? Greek Small Letter xi
\u03BF ? Greek Small Letter omicron
\u03C0 ? Greek Small Letter pi
\u03C1 ? Greek Small Letter rho
\u03C2 ? Greek Small Letter final sigma
\u03C3 ? Greek Small Letter sigma
\u03C4 ? Greek Small Letter tau
\u03C5 ? Greek Small Letter upsilon
\u03C6 ? Greek Small Letter phi
\u03C7 ? Greek Small Letter chi
\u03C8 ? Greek Small Letter psi
\u03C9 ? Greek Small Letter omega
Run Code Online (Sandbox Code Playgroud)
信息有关哪种字体Unicode的使用方法:https://en.wikipedia.org/wiki/List_of_typefaces#Unicode_fonts
一些货币符号:
# http://www.fileformat.info/info/unicode/category/Sc/list.htm
Character Name Browser Image
\u0024 DOLLAR SIGN $
\u00A2 CENT SIGN ¢
\u00A3 POUND SIGN £
\u00A4 CURRENCY SIGN ¤
\u00A5 YEN SIGN ¥
\u058F ARMENIAN DRAM SIGN
\u060B AFGHANI SIGN ?
\u09F2 BENGALI RUPEE MARK ?
\u09F3 BENGALI RUPEE SIGN ?
\u09FB BENGALI GANDA MARK
\u0AF1 GUJARATI RUPEE SIGN ?
\u0BF9 TAMIL RUPEE SIGN ?
\u0E3F THAI CURRENCY SYMBOL BAHT ?
\u17DB KHMER CURRENCY SYMBOL RIEL ?
\u20A0 EURO-CURRENCY SIGN ?
\u20A1 COLON SIGN ?
\u20A2 CRUZEIRO SIGN ?
\u20A3 FRENCH FRANC SIGN ?
\u20A4 LIRA SIGN ?
\u20A5 MILL SIGN ?
\u20A6 NAIRA SIGN ?
\u20A7 PESETA SIGN ?
\u20A8 RUPEE SIGN ?
\u20A9 WON SIGN ?
\u20AA NEW SHEQEL SIGN ?
\u20AB DONG SIGN ?
\u20AC EURO SIGN €
\u20AD KIP SIGN ?
\u20AE TUGRIK SIGN ?
\u20AF DRACHMA SIGN ?
\u20B0 GERMAN PENNY SIGN ?
\u20B1 PESO SIGN ?
\u20B2 GUARANI SIGN ?
\u20B3 AUSTRAL SIGN ?
\u20B4 HRYVNIA SIGN ?
\u20B5 CEDI SIGN ?
\u20B6 LIVRE TOURNOIS SIGN ?
\u20B7 SPESMILO SIGN ?
\u20B8 TENGE SIGN ?
\u20B9 INDIAN RUPEE SIGN ?
\u20BA TURKISH LIRA SIGN ?
\u20BB NORDIC MARK SIGN ?
\u20BC MANAT SIGN ?
\u20BD RUBLE SIGN ?
\uA838 NORTH INDIC RUPEE MARK
\uFDFC RIAL SIGN ?
\uFE69 SMALL DOLLAR SIGN ?
\uFF04 FULLWIDTH DOLLAR SIGN ?
\uFFE0 FULLWIDTH CENT SIGN ?
\uFFE1 FULLWIDTH POUND SIGN ?
\uFFE5 FULLWIDTH YEN SIGN ?
\uFFE6 FULLWIDTH WON SIGN
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16053 次 |
最近记录: |