2014-10-09 3 views
0

Как один правильно отображать специальные символы («(», «Мобайл», периоды, как запятые и т.д.), используемый в именах столбцов в ggplot графическогоКак отображать специальные символы переменных в ggplot?

столбец строка Моей CSV выглядит следующим образом:

r, á/b, ő/é, w/s (0.3), w/s (0.2), bins 
.

И я хотел бы, например, 4-й переменной будет отображаться (в легенде ggplot), как "ш/с (0.3)"

Вот мой код:

require(reshape2) 
library(ggplot2) 
library(RColorBrewer) 

fileName = paste("/2.csv", sep = "") # test file available here: https://www.dropbox.com/s/f2egxbuwwbba2q9/2.csv?dl=0 

mydata = read.csv(fileName,sep=",", header=TRUE) 

dataM = melt(mydata,c("bins")) 
ggplot(data=dataM, aes(x= bins, y=value, colour=variable, size = variable)) + 
geom_line(alpha = .9) + 
scale_colour_manual(breaks=c("r","á/b","ő/é","w/s (0.3)","w/s (0.2)"), values=c("green","orange","blue","pink","yellow")) + 
#scale_colour_brewer(type = "qual", palette = 7) + 
scale_size_manual(breaks=c("r","á/b","ő/é","w/s (0.3)","w/s (0.2)"), values=c(1,0.5,0.5,0.5,0.5)) + 
theme_bw() + 
theme(plot.background = element_blank(), panel.grid.minor = element_blank(), axis.line = element_blank(), 
legend.key = element_blank(), legend.title = element_blank()) + 
scale_y_continuous("D", expand=c(0,0)) + 
scale_x_continuous("E", expand=c(0,0)) + 
theme(legend.position="bottom") 

Который производит это:

enter image description here

Мы можем видеть, как легенда неправильно отображаются специальные символы. Любой быстрый способ (или не так-быстрый способ) исправить это?

(У меня есть другие вопросы по поводу этого графика, но я считаю, что это является предпочтительным, чтобы задать новый полный вопрос, который я буду делать прямо сейчас)

+0

это может зависеть от платформы (предположительно MacOS в вашем случае), локали и/или устройства вывода (кварца). Возможно, попробуйте одно из устройств вывода в пакете 'Cairo' и посмотрите, помогает ли это? –

+0

Это действительно OS X, я проверю Каир (еще не слышал об этом). Благодаря! – Rodolphe

+1

На самом деле, я думаю, что все, что вам может понадобиться, будет 'read.csv (file, check.names = FALSE)' –

ответ

1

Я думаю, что все, что вам нужно сделать, это включить check.names=FALSE в вашем read.csv() звонок; специальные символы в вашем заголовке преобразуются при чтении данных (см. ?make.names для получения дополнительной информации).

я изначально был немного смущен ваш вопрос, потому что я предположил, что проблема была с диакритическими знаками, такими как ë, в то время как на самом деле буквы не получать перепутались - это только не буквенно-цифровые символы, которые заменяются точками (также, строки, начинающиеся с числового значения, имели бы «X»).

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