2013-05-20 3 views
1

Я прочитал сообщения о том, как создавать курсивные слова в заголовке графика, но, похоже, это не работает для меня.Курсив в заголовке графика решетки

#create a list of species 
sp <- c("Etelis coruscans","Etelis carbunculus","Pristipomoides sieboldii","Pristipomoides filamentosus","Pristipomoides zonatus","Epinephelus quernus","Aphareus rutilans") 

#plot hisotgrams for each spp in 1cm bins 
for (i in sp){ 
    BIN_WIDTH <- 1 #desired bin width 
    print(histogram(~ Length..cm. | Method, #create and print the histogram and save to variable "graph" 
    data = hist.data[hist.data$Scientific_name == i,], 
    nint = (max(hist.data$Length..cm.) - min(hist.data$Length..cm.)+1)/BIN_WIDTH, 
    layout = c(1,2), 
    main = paste("Length-Frequency of", italic(i), "by Gear"), sep = " ", 
    xlab = "Length (cm)")) 

    #save histogram to PNG file 
    quartz.save(paste("*Length-Frequency of", i, "by method.png", sep = " "), type = "png") 
    dev.off() #close the graphics diver 
} 

Я получаю сообщение об ошибке сказав:

Error in print(histogram(~Length..cm. | Method, data = hist.data[hist.data$Scientific_name == : 
    error in evaluating the argument 'x' in selecting a method for function 'print': Error in paste(italic("Length-Frequency of", i, "by Gear")) : 
    could not find function "italic" 

Может кто-то указать на то, что я сделал не так?

ответ

7

Здесь аргумент, который вы передаете main, нуждается в паре изменений.

  • Чтобы использовать plotmath специальные АиР (то есть такие вещи, как italic()), это должно быть выражением объекта, а не строка символов. Это означает, что делает что-то вроде этого:

    main = expression(paste("Length-Freq of", italic("E. coruscans"), "by Gear")) 
    

    вместо этого:

    main = paste("Length-Freq of", italic("E. coruscans"), "by Gear") 
    
  • Кроме того, вы желая наклонным i «s значение, а не его имени, но если вы просто введите italic(i), решетка отобразит имя i как немного наклонный «i» для каждого вида. Используйте bquote() или substitute() подставить в значение i «s вместо этого, как показано здесь:

    i <- "E. coruscans" 
    xyplot(1:10~1:10, 
        main = substitute(expr = expression(paste("Species name: ", italic(i))), 
             env = list(i=i))) 
    

enter image description here

+1

совершенен! Вот окончательный рабочий код: main = substitute (expr = выражение (вставка («Длина-частота», курсив (i), «by Gear»)), env = list (i = i)), – Ben

Смежные вопросы