2015-11-02 5 views
1

Я хочу создать простую диаграмму рассеяния, используя таблицу с двумя переменными. Таблица выглядит следующим образом:R: plot() использует строки в диаграмме рассеяния после as.data.frame()

> freqs 
     Var1 Freq 
1  1 200 
2  2 50 
3  3 20 

Я получил его с помощью freqs <- as.data.frame(table(data$V2)) вычислить частоту чисел в другой таблице.

Что я могу сделать прямо сейчас:

plot(freqs, log="xy", main="Frequency of frequencies", 
xlab="frequencies", ylab="frequency of frequencies") 

Проблема заключается в том, что я получаю участок с линиями, а не точками, и я не знаю, почему. Для другого списка plot() вел себя по-другому и использовал точки. Это выглядит следующим образом:

Я знаю, что сюжет зависит от типа данных, которые он получает. Так возникает проблема в том, как я генерирую freqs?

Edit:

Вот данные по запросу: link

шаги были:

data <- read.csv(file="out-kant.txt",head=FALSE,sep="\t") 
freqs <- as.data.frame(table(data$V2)) 
plot(freqs,log="xy",main="Frequency of frequencies", xlab="frequencies", ylab="frequency of frequencies") 
+1

Вы можете предоставить дополнительную информацию, чтобы другие могли воспроизвести это, пожалуйста. Такие, как используемые данные. – zacdav

ответ

2

Похоже, тип одного из ваших переменных не установлено как целое число. Вы получаете диаграмму рассеяния, когда x и y являются целыми числами. Например, при выполнении этого кода вы получите диаграмму рассеяния, поскольку он автоматически устанавливает обе переменные как целые числа:

freqs <- read.table(header=TRUE, text='Var1 freq 
       1 200 
       2 50 
       3 20') 

plot(freqs, log="xy", main="Frequency of frequencies", xlab="frequencies", ylab="frequency of frequencies") 

enter image description here

проверить, какой тип ваши переменные являются с:

typeof(freqs$freq) 
typeof(freqs$Var1) 

Затем, если это не целое число, исправьте его с помощью:

freqs$freq <- as.integer(freqs$freq) 
freqs$Var1 <- as.integer(freqs$Var1) 

EDIT: Так что мне удалось воспроизвести проблему, когда я побежал:

freqs$Var1 <- as.factor(freqs$Var1) 
plot(freqs, log="xy", main="Frequency of frequencies", xlab="frequencies", ylab="frequency of frequencies") 

enter image description here

Возможно, ваша переменная Var1 определяется как фактор. Попробуйте запустить:

freqs$Var1 <- as.numeric(freqs$Var1) 

edit2: Использованный выше код, чтобы сделать freqs $ var1 числовой на данных, предоставленных при редактировании на главный вопрос, который исправили проблему.

+0

Спасибо за быстрый ответ. Но я проверил переменные, и они оба целые. Есть ли у вас другие предложения? –

+1

Не могли бы вы добавить [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) ваших данных на ваш оригинальный пост? Это позволило бы нам поближе познакомиться. – kneijenhuijs

+1

Я загрузил данные. Благодаря! –