2016-05-21 4 views
4

私は、軸の値がイタリック体になっているカテゴリ名であり、その後にテキストとカッコ内の数字が続くプロットを作成しようとしています。カテゴリ名と番号は軸の値によって異なります。たとえば、「(ペット1)」、「(ペット2)」と表示されます。 Axesのラベルでこれを行う他の例をいくつか見てきましたが、labelsパラメータのaxisではありません。私は少しこだわっている...イタリックと通常のフォントを混在させた軸の値を作成する

par(mar=c(5,8,1,1)) 
plot(NA, xlim=c(0,5), ylim=c(1,5), ylab="", xlab="", axes=F) 
axis(1) 
pet <- c("Dog", "Cat", "Goldfish", "Dog", "Rabbit") 
number <- 1:5 
formatted <- paste("italic(", pet, ")~(Pet ", number, ")", sep="") 
axis(2, labels=sapply(formatted, as.expression), at=1:5, las=2) 

結果のプロットは、右の位置(例えばitalic(Dog)~(Pet 1))でmathplot構文を持っているので、私は、私は近いんだ願っていますが、それは正しく表示されません。

私がsapplyの呼び出しをしなければ、ラベルの数とatの値の間に不一致があると訴えます。

私はaxis(2, labels=parse(text=formatted), at=1:5, las=2)を行うと、私は

Error in parse(text = formatted) : 
    <text>:1:18: unexpected numeric constant 
1: italic(Dog)~(Pet 1 
        ^

提案を取得しますか?

答えて

2

formattedをリストに変更し、bquoteを使用してください。次に、do.callで式のリストを評価することができます。

par(mar=c(5,8,1,1)) 
plot(NA, xlim=c(0,5), ylim=c(1,5), ylab="", xlab="", axes=F) 
axis(1) 
pet <- c("Dog", "Cat", "Goldfish", "Dog", "Rabbit") 
number <- 1:5 
formatted <- lapply(1:5, function(i) bquote(paste(italic(.(pet[i]))~"(Pet", .(number[i]), ")", sep=""))) 
axis(2, labels=do.call(expression, formatted), at=1:5, las=2) 

もう一つの問題は、あなたがペースト内の式関数呼び出し(italic)の前後に引用符を必要としないということだったかもしれません。

+0

これは素晴らしいです - ありがとう! –

+0

問題ありません。あなたは、 "軸目盛ラベル"を検索することで、グーグルで答えを見つけることができます。 – zzk

関連する問題