2012-09-20 79 views
15

Tôi muốn thêm văn bản cao su vào ô ggplot2 sử dụng annotate(). Sử dụng expression(), như được mô tả here để thêm nhãn mác vào trục, dường như không hoạt động. Để wit:Cách chú thích() ggplot bằng latex

# Use expression() to create subscripted text 
p <- ggplot(mpg, aes(x=cty, y=hwy)) + geom_point() + 
    scale_x_continuous(expression(text[subscript])) 

# But expression() in annotate adds nothing to the plot 
p + annotate("text", x=10, y=40, label=expression(text[subscript])) 

# Passing regular text to annotate works fine 
p + annotate("text", x=10, y=40, label="foo") 

Tại sao expression s đối xử khác biệt bởi annotate hơn bởi các chức năng ggplot khác? Và làm thế nào tôi có thể chú thích bằng latex?

+0

bạn có thể xem gói 'tikzDevice' ... –

+0

Dường như không còn được duy trì tích cực nữa. (Nhưng vẫn còn có khả năng hữu ích!) –

+1

Sự hiểu biết của tôi là nó vẫn được sử dụng khá rộng rãi, và chức năng, nhưng ở trạng thái hiện tại của trại trẻ mồ côi do quy tắc kiểm tra CRAN/R CMD chặt chẽ hơn ... nó được sửa đổi lần cuối vào R-forge 15 tháng 7 2012 ... –

Trả lời

13

Bạn có thể sử dụng parse tranh luận, mà không expression:

p + annotate("text", x=10, y=40, label="text[subscript]", parse=TRUE) 
+0

Bạn có thể xác nhận cho tôi xem bạn có nhận được bất kỳ hành vi bất thường nào không nếu bạn thử sử dụng 'label = expression (văn bản [subscript]), parse = TRUE) '? (Tôi chưa nâng cấp lên 0.9.2 ...) – joran

+0

Vâng, nó không giống như vậy. –

+0

Ok ... vẫn còn một chút groggy sáng nay, và tôi đã làm điều đó do nhầm lẫn lần đầu tiên thông qua. Chưa từng thấy phản ứng đó từ R trước đây. Kỳ dị. – joran

4

Các tikzDevice gói đã trở lại trên cran (phiên bản mới nhất 0.9 được công bố tháng 11 năm 2015).

Sử dụng tikz yêu cầu cài đặt LaTeX đầy đủ; nó có thể dễ dàng nhất để thực hiện qua knitr trong tài liệu LaTeX (chỉ cần đặt dev="tikz" trong các tùy chọn đoạn). Tuy nhiên, bạn có thể sử dụng nó để tạo ra một con số độc lập là tốt. Trớ trêu thay, phần khó nhất của câu hỏi này đã nhận được một subscript văn bản, mà đòi hỏi phải có một gói LaTeX bổ sung (fixltx2e) cho lệnh \textsubscript ...

library(tikzDevice) 
## add a package to the defaults 
options(tikzLatexPackages= 
      c(getOption("tikzLatexPackages"),"\\usepackage{fixltx2e}")) 
tikz("tikz.tex",standAlone=TRUE) 
library("ggplot2"); theme_set(theme_bw()) 
p <- ggplot(mpg, aes(x=cty, y=hwy)) + geom_point() + 
    scale_x_continuous(name="text\\textsubscript{subscript}") 
p + annotate("text", x=10, y=40, label="text\\textsubscript{subscript}") 
dev.off() 

system("pdflatex tikz.tex") 

enter image description here

14

Có được một gói R gọi latex2exp mà có thể hữu ích. Nó có chức năng TeX mà chấp nhận một số biểu thức LaTeX kèm theo ký hiệu đô la $ như trong ví dụ này:

library(latex2exp) 
library(ggplot2) 

qplot(1, "A")+ 
    ylab(TeX("Formula: $\\frac{2hc^2}{\\lambda^\\beta}$"))+ 
    xlab(TeX("$\\alpha$")) 

Example

Thêm ví dụ có thể được tìm thấy trong this vignette.

+5

Ví dụ của bạn hoạt động đối với nhãn, nhưng câu hỏi là về chú thích. Ví dụ của bạn không hoạt động trong lớp chú thích cho tôi, nhưng, nếu bạn chỉ định output = 'character' và thêm 'parse = TRUE' vào chú thích gọi nó. 'chú thích (geom = 'văn bản', x = 3, y = 3, nhãn = Tex (" $ \\ mũ {Y} = B_0 + B_1X_1 ", đầu ra = 'ký tự'), phân tích = TRUE) ' – svannoy

Các vấn đề liên quan