ggtext 使用什么格式化语言来格式化文本?
What formatting language does ggtext use to format text?
我正在尝试在 ggplot2 轴上以粗体显示科学记数法,使用文字“Ax10^B”格式,而不是 ggplot2 默认的“AeB”格式。当此代码为运行
library(tidyverse)
library(ggtext)
ggplot(mpg, aes(displ, hwy*10^9)) + geom_point()
#makes the scientific notation using "AeB" explicitly write out Ax10^B
fancy_scientific <- function(l) {
# turn in to character string in scientific notation
l <- format(l, scientific = TRUE)
# quote the part before the exponent to keep all the digits
l <- gsub("^(.*)e", "'\1'e", l)
# turn the 'e+' into plotmath format
l <- gsub("e", "%*%10^", l)
# return this as an expression
parse(text=l)
}
ggplot(mpg, aes(displ, hwy*10^9)) +
theme_classic() +
geom_point() +
scale_y_continuous(labels= fancy_scientific) +
theme(text = element_text(face = "bold"),
axis.text.y = element_markdown(face = "bold"))
这是结果:
我使用 ggtext
中的 element_markdown()
,因为它允许转换粗体字,正如我在此处发现的那样:How do I make ggplot2 custom text formats from axis scale functions follow format specifications set in theme()?
我可以通过将 '\1'
更改为 \1
(删除单引号)来修复双引号。但是我无法显示乘号。我可以只使用小写字母 x
但那太懒了。
当我尝试按照此处的建议使用 $\times$
时 https://rstudio-pubs-static.s3.amazonaws.com/18858_0c289c260a574ea08c0f10b944abc883.html I get an error. A vignette for ggtext
seems to use html: https://cran.r-project.org/web/packages/ggtext/vignettes/theme_elements.html 但他们使用 <sup>
标签,这似乎与使用 ^
在这里生成指数相反,当我使用这些标签时它们不起作用,我搜索的所有“乘法登录 html”资源都没有找到解决方案。所以我的问题是:我在哪里可以找到一个很好的资源来学习 ggtext
/ ggplot2
用于轴刻度标签的正确格式化语言?也想知道我遇到的具体问题的解决方案。
这是一个只有 plotmath
个表达式的版本:
library(dplyr)
library(ggplot2)
fancy_scientific <- function(l) {
l <- format(l, scientific = TRUE)
parse(text=gsub("(.*)e(\+?)(\-?[0-9]+)",
"bold('\1') * bold(' * ') * bold('10')^bold('\3')", l))
}
mpg %>% dplyr::mutate(hwy = hwy * 1e9) %>%
ggplot(aes(displ, hwy)) +
theme_classic() +
geom_point() +
scale_y_continuous(labels= fancy_scientific) +
theme(text = element_text(face = "bold"))
...这里是 ggtext
:
的版本
library(dplyr)
library(ggplot2)
library(ggtext)
fancy_scientific <- function(l) {
l <- format(l, scientific = TRUE)
parse(text=gsub("(.*)e(\+?)(\-?[0-9]+)", "\1 * 10^(\3)", l))
## this would also work, instead of the line above:
# gsub("(.*)e(\+?)(\-?[0-9]+)", "**\1 \* 10<sup>\3</sup>**", l)
}
mpg %>% dplyr::mutate(hwy = hwy * 1e9) %>%
ggplot(aes(displ, hwy)) +
theme_classic() +
geom_point() +
scale_y_continuous(labels= fancy_scientific) +
theme(text = element_text(face = "bold"),
axis.text.y = element_markdown(face = "bold"))
由 reprex package (v0.3.0)
于 2020 年 8 月 20 日创建
{ggtext} 使用 Markdown/HTML。您可以仅使用 unicode 字符或使用 HTML 实体来插入特殊字符。在这里,你可能想要 ×
.
此外,在使用 {ggtext} 时不要将字符串解析为表达式。
library(tidyverse)
library(ggtext)
#makes the scientific notation using "AeB" explicitly write out Ax10^B
fancy_scientific <- function(l) {
# turn in to character string in scientific notation
l <- format(l, scientific = TRUE)
# quote the part before the exponent to keep all the digits
l <- gsub("^(.*)e", "\1e", l)
# turn the 'e+' into plotmath format
l <- gsub("e", "×10^", l)
# return this as a string
l
}
ggplot(mpg, aes(displ, hwy*10^9)) +
theme_classic() +
geom_point() +
scale_y_continuous(labels= fancy_scientific) +
theme(text = element_text(face = "bold"),
axis.text.y = element_markdown(face = "bold"))
由 reprex package (v0.3.0)
于 2020-08-20 创建
我正在尝试在 ggplot2 轴上以粗体显示科学记数法,使用文字“Ax10^B”格式,而不是 ggplot2 默认的“AeB”格式。当此代码为运行
library(tidyverse)
library(ggtext)
ggplot(mpg, aes(displ, hwy*10^9)) + geom_point()
#makes the scientific notation using "AeB" explicitly write out Ax10^B
fancy_scientific <- function(l) {
# turn in to character string in scientific notation
l <- format(l, scientific = TRUE)
# quote the part before the exponent to keep all the digits
l <- gsub("^(.*)e", "'\1'e", l)
# turn the 'e+' into plotmath format
l <- gsub("e", "%*%10^", l)
# return this as an expression
parse(text=l)
}
ggplot(mpg, aes(displ, hwy*10^9)) +
theme_classic() +
geom_point() +
scale_y_continuous(labels= fancy_scientific) +
theme(text = element_text(face = "bold"),
axis.text.y = element_markdown(face = "bold"))
这是结果:
我使用 ggtext
中的 element_markdown()
,因为它允许转换粗体字,正如我在此处发现的那样:How do I make ggplot2 custom text formats from axis scale functions follow format specifications set in theme()?
我可以通过将 '\1'
更改为 \1
(删除单引号)来修复双引号。但是我无法显示乘号。我可以只使用小写字母 x
但那太懒了。
当我尝试按照此处的建议使用 $\times$
时 https://rstudio-pubs-static.s3.amazonaws.com/18858_0c289c260a574ea08c0f10b944abc883.html I get an error. A vignette for ggtext
seems to use html: https://cran.r-project.org/web/packages/ggtext/vignettes/theme_elements.html 但他们使用 <sup>
标签,这似乎与使用 ^
在这里生成指数相反,当我使用这些标签时它们不起作用,我搜索的所有“乘法登录 html”资源都没有找到解决方案。所以我的问题是:我在哪里可以找到一个很好的资源来学习 ggtext
/ ggplot2
用于轴刻度标签的正确格式化语言?也想知道我遇到的具体问题的解决方案。
这是一个只有 plotmath
个表达式的版本:
library(dplyr)
library(ggplot2)
fancy_scientific <- function(l) {
l <- format(l, scientific = TRUE)
parse(text=gsub("(.*)e(\+?)(\-?[0-9]+)",
"bold('\1') * bold(' * ') * bold('10')^bold('\3')", l))
}
mpg %>% dplyr::mutate(hwy = hwy * 1e9) %>%
ggplot(aes(displ, hwy)) +
theme_classic() +
geom_point() +
scale_y_continuous(labels= fancy_scientific) +
theme(text = element_text(face = "bold"))
...这里是 ggtext
:
library(dplyr)
library(ggplot2)
library(ggtext)
fancy_scientific <- function(l) {
l <- format(l, scientific = TRUE)
parse(text=gsub("(.*)e(\+?)(\-?[0-9]+)", "\1 * 10^(\3)", l))
## this would also work, instead of the line above:
# gsub("(.*)e(\+?)(\-?[0-9]+)", "**\1 \* 10<sup>\3</sup>**", l)
}
mpg %>% dplyr::mutate(hwy = hwy * 1e9) %>%
ggplot(aes(displ, hwy)) +
theme_classic() +
geom_point() +
scale_y_continuous(labels= fancy_scientific) +
theme(text = element_text(face = "bold"),
axis.text.y = element_markdown(face = "bold"))
由 reprex package (v0.3.0)
于 2020 年 8 月 20 日创建{ggtext} 使用 Markdown/HTML。您可以仅使用 unicode 字符或使用 HTML 实体来插入特殊字符。在这里,你可能想要 ×
.
此外,在使用 {ggtext} 时不要将字符串解析为表达式。
library(tidyverse)
library(ggtext)
#makes the scientific notation using "AeB" explicitly write out Ax10^B
fancy_scientific <- function(l) {
# turn in to character string in scientific notation
l <- format(l, scientific = TRUE)
# quote the part before the exponent to keep all the digits
l <- gsub("^(.*)e", "\1e", l)
# turn the 'e+' into plotmath format
l <- gsub("e", "×10^", l)
# return this as a string
l
}
ggplot(mpg, aes(displ, hwy*10^9)) +
theme_classic() +
geom_point() +
scale_y_continuous(labels= fancy_scientific) +
theme(text = element_text(face = "bold"),
axis.text.y = element_markdown(face = "bold"))
由 reprex package (v0.3.0)
于 2020-08-20 创建