2015-06-01 4 views
1
plot(x,y,type="h",...) 
text(x,y,labels=columnL) 

Это кажется очень простым: у меня есть график (гистограмма) и используйте текстовую функцию для обозначения точек.Надпись/индекс в нескольких текстовых ярлыках (таблица) в R

В таблице данных у меня есть строки, содержащие имена x, y и label (columnL, каждая точка имеет другое имя). Таблица импортируется через read.table из CSV-файла.

Все работает отлично, НО: Я хочу использовать индексы и надстрочные индексы в ярлыках, и все найденные решения были для меток осей - здесь у меня есть ряд различных меток, все из которых необходимо отформатировать правильно, поэтому я не увенчался успехом при попытке paste() и expression() в text(labels=) (вернул тот же ярлык для всех точек) ... Итак, в более общем плане: возможно ли иметь варианты форматирования в этих ярлыках?

Я совершенно не знаком с R (и программирование), извините, если это неясно или кажется глупым. Вероятно, существует способ «пакетного управления» содержимым ColumnL каким-то образом. Я мог добавить форматирование ([] и ^) в .csv-файл загодя (но поскольку он не читается как выражение, выход не имеет форматирования).

ОБНОВЛЕНО Edit: Это почти работает:

mytable <- read.table("C:/Data/Example.txt", header= T, sep= "\t") 
attach(mytable) 

ColL <- as.character(ColumnL) 
ColN <- parse(text=ColL) 

plot(x1,y1) 
text(x1,y1+0.1,labels=ColN) 

где example.txt содержит:

x1 y1 ColumnL 
1 2 a[1]^"+" 
1 3 b[19] 
2 5 c[27] 
4 6 v[45] 

Что хорошего в том, что индекс работает для чисел (и я не ум, имеющий форматирование, определенное во входном файле). Однако одна вещь, которую я не могу исправить, заключается в том, что , независимо от котировок, запускает конкатенацию строк 1 и 2, когда ColL выполняется через parse(). Как я могу правильно использовать + здесь? Предполагается, что это надстрочный индекс ...

Редактировать: Обратите внимание, что проблема возникает только в том случае, если "+" является последним (не пространственным) символом записи (или после чего следует [), в противном случае он отлично работает (по-видимому "+" только должен быть в уравнениях и там вы не ожидали бы его в конце, но вот где мне это нужно)

+1

множество примеров под '' plotmath' – rawr

+0

Это поможет включить [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) с образцами входных данных и показать код, который вы действительно пробовали. Возможно [этот вопрос] (http://stackoverflow.com/questions/30540028/greek-letters-in-legend-in-r/30540088#comment49155191_30540088) поможет. – MrFlick

+0

Спасибо MrFlick, я рассмотрю другой вопрос, когда у меня есть момент, теперь я добавил лучший пример для иллюстрации ... – MHelf

ответ

0

Теперь, когда я смотрел на эту https://stat.ethz.ch/pipermail/r-help/1999-July/004414.html, я понял, что + и - можно поставить в конец строки при добавлении аргумента. в словах из ссылки:

«-» оператор должен по крайней мере один аргумент, но один может быть пустым

То же самое касается +, поэтому входная таблица может содержать все форматирование вот так:

x1 y1 ColumnL 
1 2 a[11]^{+{}} 
1 3 b[19] 
2 5 c[27] 
4 6 v[45] 

и будет работать с кодом обновленного редактирования сверху.

Я думаю, что это особенно интересно химикам для обозначения точек на графике с зарядами ионов и формулами сумм.

0

Использование

read.table ("C: /Data/Example.txt", заголовок = T, SEP = "\ T", stringsAsFactors = F, цитата = "")

позволит использовать входной файл с цитатой (то есть a[1]^"+"). stringsAsFactors=F устранит использование as.character() в вашем коде.