曾几何时,我ggplot2使用windowsFonts(Times=windowsFont("TT Times New Roman"))改变它来改变我的字体.现在我无法理解这一点.
在尝试设置family=""时ggplot2 theme()我似乎无法生成字体更改,因为我使用不同的字体系列编译下面的MWE.
library(ggplot2)
library(extrafont)
loadfonts(device = "win")
a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16,
# family="Comic Sans MS"))
# family="CM Roman"))
# family="TT Times New Roman"))
# family="Sans"))
family="Serif"))
print(a)
print("Graph should have refreshed")
Run Code Online (Sandbox Code Playgroud)
R正在返回一个警告font family not found in Windows font database,但有一个我正在关注的教程(如果我能再次找到它,我将在这里更新链接)说这是正常的而不是问题.此外,这在某种程度上起作用,因为我的图表曾经使用过一些arial或helvitica类型的字体.我认为即使在最初的迁移期间,这也始终是一个警告.
UPDATE
当我运行windowsFonts()我的输出是
$ serif [1]"TT Times …
我试图在 ggplot2 的轴标题中插入一个有意的换行符。正如下面的 MWE 所示,我用来parse(text=X)评估LaTeX希腊字符和下标/上标的可能样式包含。我已经看到 ggpot2 和表达式对象的标签工具应该能够处理新行字符,例如\n. 但我致力于使用parse(text=X). 然而,我没有成功地将其合并到我的 x 和 y 轴标题字符串中。
\n.*{"\n"}*,我得到与*. 这让我怀疑它parse(text=X)不支持新行符号。如果是这种情况,插入新行的适当方法是什么?
过去我已经能够使用,atop但这次更喜欢尝试使用不同的东西,因为它在行之间留下了太多的空白。因此,或者,我会接受一个演示如何自定义 的间距的答案atop。
微量元素:
library(ggplot2)
library("grid")
print("Program started")
gg <- ggplot(diamonds, aes(clarity, fill=cut))
gg <- gg + geom_bar(position="dodge")
gg <- gg + labs(y=parse(text="ahhhh\nWe~are~here"), x=parse(text="ahhhh\nWe~are~here"),title="title")
gg <- gg + theme(
legend.justification=c(0,1),
legend.position=c(0,1),
legend.title=element_blank(),
plot.background=element_rect(fill="red")
);
gg <- gg + guides(fill=guide_legend(title.position="top"))
print(gg)
print("Program complete - …Run Code Online (Sandbox Code Playgroud) 改编自这个已回答的问题:自定义轴标签 下面 MWE 中的这一行可以解析手动指定的 x 轴标签/值:
scale_x_discrete(labels=parse(text=c("The~First~Value","A~Second~Value","Finally~Third~Value")))
但任何引用动态替换(即包含导入表达式的有序列表)的尝试c()都会xo失败......
我该如何格式化或调整此列以使其正常工作?c()我很困惑,因为解析命令对...的内容运行良好。
在下面的模拟数据框中,为简单起见,我在此示例中包含的唯一字符是~(解析并产生空间)。完整上下文将包含从外部管理表导入的上标、下标、符号和希腊字符。
微量元素:
library(ggplot2)
print("Program started")
z <- c("1","2","3")
x <- c("The~First~Value","A~Second~Value","Finally~Third~Value")
s <- c("No","No","No","Yes","Yes","Yes")
y <- c(1,2,3,2,3,4)
df <- as.data.frame(cbind(x=c(x,x),s=s,y=y,z=c(z,z)))
##########################################################################
xo <- as.data.frame(cbind(z,x))
xo <- xo[,"x"]
df[,"x"] <- factor(df[,"x"], levels=xo,ordered=TRUE)
##########################################################################
#xo <- levels(droplevels(xo))
gg <- ggplot(data = df, aes_string(x="x", y="y", weight="y", ymin=paste0("y"), ymax=paste0("y"), fill="s"));
dodge_str <- position_dodge(width = NULL, height = NULL);
gg <- gg + geom_bar(position=dodge_str, stat="identity", size=.3, colour …Run Code Online (Sandbox Code Playgroud)