【问题标题】:Knitr: using scales package to get counts in ggplotKnitr:使用 scales 包在 ggplot 中获取计数
【发布时间】:2014-03-18 11:27:42
【问题描述】:

我通常使用 R 中的 scales 包在我的 ggplots 的 y 轴上给出计数数据的百分比。但是,当我尝试在 knitr 中执行此操作时,由于图中的百分比符号而出现错误:

Error in getMetricsFromLatex(TeXMetrics) : TeX was unable to calculate metrics for the following string or character: 0%

我可以使用正常的计数轴生存,但更喜欢 %.有没有办法解决这个问题?

这是一个可重现的示例(删除+ scale_y_continuous(label=percent) 给出了一个可编译的示例):

\documentclass[11pt]{article}
\usepackage{tikz}

\begin{document} 
<<packages, echo=F>>=
    library(ggplot2)
    library(scales)
@
<<chunkopts, echo=F>>=
    opts_chunk$set(echo=F, cache=T,  autodep=T, fig.width = 9/1.5, fig.height=5/1.5,
    fig.align="center", dev="tikz", fig.pos="h!tbp", warning=F, message=F)
    dep_auto()
@
<<mydata>>=
    mydata <- data.frame(
      X = letters[1:10],
      Y = sample(c("yes", "no"), 100, replace = TRUE))
@
<<plot>>=
     ggplot(mydata, aes(X, fill = Y)) +  geom_bar(position = "fill") +
             scale_y_continuous(label=percent)
@
\end{document}

我正在使用 TexShop 编译我的 .Rnw 文件。

【问题讨论】:

    标签: r ggplot2 latex knitr


    【解决方案1】:

    问题是% 是乳胶中的特殊字符,需要转义。尝试以下替代比例

    library(stringr)
    library(plyr)
    latex_percent <- function (x) {
        x <- plyr::round_any(x, scales:::precision(x)/100)
        stringr::str_c(comma(x * 100), "\\%")
    }
    

    并将labels=percent 替换为labels=latex_percent

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      相关资源
      最近更新 更多