2013-03-08 27 views
7

Tôi tạo một ô cho nhiều tập dữ liệu. Mỗi bộ dữ liệu sẽ nhận được truyền thuyết riêng của nó, có thể chứa các chữ cái Hy Lạp, các ký hiệu âm mưu hoặc phụ và siêu tiêu hao. Tôi muốn tạo ra các truyền thuyết-văn bản trong một vòng lặp.Sử dụng các ký tự phụ/siêu văn bản và các ký tự đặc biệt trong các văn bản chú giải của các ô R

Bquote hoạt động tốt, nếu chỉ có một văn bản chú giải. Nếu tôi cố gắng thêm các văn bản huyền thoại additinal, các plotmath-commads bị lạc, ...

x <- 0:10 
y1 = x * x 
y2 = x * 10 

plot (1,1, type="n", xlab=bquote(Omega), ylab="Y", las=1, xlim=range(x), ylim=range(y1, y2)) 
lines(x, y1, col=1, pch=1, type="b") 
lines(x, y2, col=2, pch=2, type="b") 

# generate legend texts (in a loop) 
legend_texts = c(
    bquote(Omega^2) 
    , bquote(Omega%*%10) 
) 
# Using a single bquote works fine: 
#legend_texts = bquote(Omega^2) 
#legend_texts = bquote(Omega%*%10) 

legend(
    "topleft" 
    , legend = legend_texts 
    , col = c(1:2) 
    , pch = c(1:2) 
    , lty = 1 
) 
+1

+1 cho ví dụ có thể tái sản xuất! – A5C1D2H2I1M1N2O1R2T1

Trả lời

4

Thay đổi "legend_texts" để:

# generate legend texts (in a loop) 
legend_texts = c(
    as.expression(bquote(Omega^2)) 
    , as.expression(bquote(Omega%*%10)) 
) 

Từ trang trợ giúp cho ?legend, những "huyền thoại" đối số được mô tả là:

một ký tự hoặc biểu thức vector. chiều dài ≥ 1 xuất hiện trong chú giải. Các đối tượng khác sẽ bị ép buộc bởi as.graphicsAnnot.

Output:

enter image description here

+0

Chứng khó đọc ở đây. Trang trợ giúp đọc "vector biểu thức", không phải "vectơ biểu thức". :) – A5C1D2H2I1M1N2O1R2T1

6

Hãy thử điều này:

legend_texts = expression(
    Omega^2, Omega*10) 

legend(
    "topleft" 
    , legend = legend_texts 
    , col = c(1:2) 
    , pch = c(1:2) 
    , lty = 1 
    ) 

tôi không thể nói nếu bạn muốn Omega^10 hoặc Omega*10 hoặc Omega%*%10, nhưng tất cả đều sẽ tạo ra biểu thức plotmath chấp nhận được.

enter image description here

+0

Tốt hơn việc sử dụng 'as.expression' của tôi nhiều lần. +1 – A5C1D2H2I1M1N2O1R2T1

+0

Khi sử dụng hàm 'expression', bạn tạo một vector biểu thức nhiều giá trị bằng cách tách các phần tử bằng dấu phẩy. –

+0

cảm ơn. Tôi vừa đọc lại trang trợ giúp và đi đến kết luận đó. :) – A5C1D2H2I1M1N2O1R2T1

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