2016-03-08 14 views
5

Tôi đang cố gắng để có được một superscript cho các đơn vị của trục y của tôi bằng cách sử dụng biểu thức plotmath tham chiếu trong một số bài viết. Tôi đã xem qua các chủ đề về cách sử dụng expression và cũng có thể here, nhưng nó không hoạt động đối với tôi. Dưới đây là những gì tôi có cho đến nay:Superscripting trong ggplot2 sử dụng plotmath

ggplot(data.frame, aes(Region, Zmar_sh)) + 
    geom_boxplot() + xlab("Region") + 
    ylab(expression(paste("eelgrass shoot density", " (shoots/", expression(m[2])))) + 
    ggtitle(expression(paste(italic("Zostera marina")," shoot density in X Bay", sep = " "))) 

Khái niệm ggtitle hoạt động, nhưng tôi vẫn không nhận được trục y của tôi để đọc "mật độ chụp eelgrass (chồi/m2)" với "2" như superscript. Tôi đang thiếu gì?

Trả lời

4

Bạn không cần số thứ hai expression(). Ngoài ra, m[2] cho một chỉ số. Sử dụng m^2 để có chỉ số.

Dưới đây là một ví dụ với khung mtcars dữ liệu built-in:

ggplot(mtcars, aes(wt, mpg)) + 
    geom_point() + 
    ylab(expression(paste("eelgrass shoot density", " (shoots/", m^2,")"))) 

Trong thực tế, bạn thậm chí không cần phải sử dụng paste. Thay vào đó, bạn có thể làm điều này:

ylab(expression(eelgrass~shoot~density~(shoots/m^2))) 

trong đó ~ là ký tự "khoảng trắng". Nếu bạn đặt khoảng trắng thực sự giữa các từ (không sử dụng ~), bạn sẽ gặp lỗi. Tuy nhiên, để có thể đọc, bạn cũng có thể làm điều này:

ylab(expression(eelgrass ~ shoot ~ density ~ (shoots/m^2))) 

tương đương với đoạn mã trên, vì không gian bị bỏ qua miễn là ~ là ở đó.

Bất kỳ của ylab biểu thức trên sẽ cung cấp cho các cốt truyện sau:

enter image description here

+0

Cảm ơn! Tôi đã không nhận thức được việc sử dụng của ~. Tôi biết đó là một cái gì đó nhỏ mà tôi đã mất tích. Và bạn đã đúng về siêu âm, tất nhiên. Tôi cũng đang làm việc với các bản đăng ký trong mã của mình và viết cụm từ không chính xác trong thời gian đăng bài của tôi. – KVininska

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