在 R ggplot 轴中使用表达式和非 ASCII 字符
Using expression and non-ASCII character in R ggplot axis
我正在尝试使用带有上标和非 ASCII 字符的 ggplot
绘制图表。虽然带上标的表达式适用于简单字符,如下所示:
ggplot
脚本的相关部分
labs(
y = "těžba, C [t]",
x = "rok") +
scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6, accuracy = 1),
sec.axis = sec_axis(~.*4.2, name = expression("objem [m"^"3" * "]"),
breaks = seq(0,4e7,5e6), labels = function(b) { paste0(round(b/1000000, 0), " M")})) +
theme_bw() + theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
ggplot
尝试对这些字符使用表达式时出现错误:ěž
而在没有 expression() 的 lext y 轴上没有问题。
scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6, accuracy = 1),
sec.axis = sec_axis(~.*4.2, name = expression("těžba, objem [m"^"3" * "]"),
breaks = seq(0,4e7,5e6), labels = function(b) { paste0(round(b/1000000, 0), " M")}))
Error in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
Metric information not available for this family/device
我找不到解决方法。感谢任何帮助。
编辑
尝试使用 png
或 cairo-png
设备导出图像时出现不同错误消息的问题。没有抗锯齿的默认设备正在工作。
- Session info -----------------------------------------------------------
setting value
version R version 4.0.3 (2020-10-10)
os Windows 10 x64
system x86_64, mingw32
ui RStudio
language (EN)
collate Czech_Czechia.1250
ctype Czech_Czechia.1250
tz Europe/Prague
date 2021-01-06
为了扩展我的评论,这里有一个可重现的例子 - 展示了我如何尝试重现它 - 但我做不到。
可能是您的软件包不是最新的,或者只是您需要重新启动一个新会话:)
library(ggplot2)
ggplot(mtcars, aes(mpg, disp)) +
labs( y = expression("těžba, objem [m"^"3" * "]"))
由 reprex package (v0.3.0)
于 2021 年 1 月 6 日创建
devtools::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#> setting value
#> version R version 4.0.3 (2020-10-10)
#> os macOS Catalina 10.15.7
#> system x86_64, darwin17.0
#> ui X11
#> language (EN)
#> collate en_GB.UTF-8
#> ctype en_GB.UTF-8
#> tz Europe/London
#> date 2021-01-06
#>
#> ─ Packages ───────────────────────────────────────────────────────────────────
#> package * version date lib source
#> ggplot2 * 3.3.2 2020-06-19 [1] CRAN (R 4.0.0)
我正在尝试使用带有上标和非 ASCII 字符的 ggplot
绘制图表。虽然带上标的表达式适用于简单字符,如下所示:
ggplot
脚本的相关部分
labs(
y = "těžba, C [t]",
x = "rok") +
scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6, accuracy = 1),
sec.axis = sec_axis(~.*4.2, name = expression("objem [m"^"3" * "]"),
breaks = seq(0,4e7,5e6), labels = function(b) { paste0(round(b/1000000, 0), " M")})) +
theme_bw() + theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
ggplot
尝试对这些字符使用表达式时出现错误:ěž
而在没有 expression() 的 lext y 轴上没有问题。
scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6, accuracy = 1),
sec.axis = sec_axis(~.*4.2, name = expression("těžba, objem [m"^"3" * "]"),
breaks = seq(0,4e7,5e6), labels = function(b) { paste0(round(b/1000000, 0), " M")}))
Error in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, : Metric information not available for this family/device
我找不到解决方法。感谢任何帮助。
编辑
尝试使用 png
或 cairo-png
设备导出图像时出现不同错误消息的问题。没有抗锯齿的默认设备正在工作。
- Session info -----------------------------------------------------------
setting value
version R version 4.0.3 (2020-10-10)
os Windows 10 x64
system x86_64, mingw32
ui RStudio
language (EN)
collate Czech_Czechia.1250
ctype Czech_Czechia.1250
tz Europe/Prague
date 2021-01-06
为了扩展我的评论,这里有一个可重现的例子 - 展示了我如何尝试重现它 - 但我做不到。
可能是您的软件包不是最新的,或者只是您需要重新启动一个新会话:)
library(ggplot2)
ggplot(mtcars, aes(mpg, disp)) +
labs( y = expression("těžba, objem [m"^"3" * "]"))
由 reprex package (v0.3.0)
于 2021 年 1 月 6 日创建devtools::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#> setting value
#> version R version 4.0.3 (2020-10-10)
#> os macOS Catalina 10.15.7
#> system x86_64, darwin17.0
#> ui X11
#> language (EN)
#> collate en_GB.UTF-8
#> ctype en_GB.UTF-8
#> tz Europe/London
#> date 2021-01-06
#>
#> ─ Packages ───────────────────────────────────────────────────────────────────
#> package * version date lib source
#> ggplot2 * 3.3.2 2020-06-19 [1] CRAN (R 4.0.0)