从文本文件中读取元组并绘制成图形
Read tuple from text-file and plot to graph
我有一个包含整数数据元组的文本文件,我想将其绘制成一个简单的图形。
文本文件 ("test.txt") 如下所示。所有元组均由制表符分隔。
文本文件 (test.txt)
(1,2) (1,3) (2,8) (3,12) (5,82) (...)
R-代码
m = read.table('test.txt', header = FALSE, sep='\t')
plot(log(m[,1]), log(m[,2]))
结果我得到
Error in Math.factor(m[,1]): 'log' not meaningful for factors
我能理解的是,我的数据元组不是作为数值而是作为因子读入的。因此,'log'-运算符无法对这些(因子)值进行运算。
所以我的想法是将因子转换为数字,但我无法转换数据。此外,我不确定这是否是我的问题的解决方案。
我想要的是一个以 (x,y) 值为轴的二维图。
也许有人知道如何处理它。
--- 编辑 ---
library(readtext)
library(ggplot2)
DATA_DIR <- system.file("extdata/", package = "readtext")
mytab = readtext(paste0(DATA_DIR, "/hlra/*"))
# readtext object consisting of 1 document and 0 docvars.
# # data.frame [1 x 2]
# doc_id text
# <chr> <chr>
# 1 sample_tuple_file.txt "\"(1,2), (1,\"..."
mytuple = strsplit(mytab$text, ', ')
mytuple = mytuple[[1]]
substring(mytuple[1], 2, 2) # get x value
substring(mytuple[1], 4, 4) # get y value
x = c()
y = c()
for (i in 1:length(mytuple)){
my_x = substring(mytuple[i], 2, 2)
my_y = substring(mytuple[i], 4, 4)
x <- c(x, my_x)
y <- c(y, my_y)
rm(my_x)
rm(my_y)
}
mydata = data.frame(x = x, y = y)
ggplot(data = mydata, aes(x = x, y = y)) +
geom_point()
所以,我已经测试了上面的代码。但它不适用于所有数据。结果图只是第一个值。我重新组织了我的文本文件,所以每个元组都以逗号和制表符结尾。
plot from code above
我对 R 完全陌生,所以我确定我的代码中遗漏了一些明显的错误。顺便说一句,我必须更改一些代码才能在 R-Studio 中获取它 运行(添加缺少的库(ggplot2 和 readtext)并更改文件目录。
假设您有这种文本文件:
(1,2) (1,3) (2,8) (3,12) (5,82) (...)
我推荐使用 read_text
。使用向量和字符串以准备好绘图的格式准备数据。
#if packages aren't yet included in R import them by using R-console
#Command: install.packages("package-name")
#import library "readtext"
library(readtext)
#install library "ggplot2"
library(ggplot2)
#get directory from "readtext"-package which is in my case...
#C:\Users\your_name\Documents\R\win-library.5\readtext\extdata\your_folder\
DATA_DIR <- system.file("extdata/", package = "readtext")
#the textfile you want to plot should be in folder "your_folder"
mytab = readtext(paste0(DATA_DIR, "your_folder/*")
# readtext object consisting of 1 document and 0 docvars.
# # data.frame [1 x 2]
# doc_id text
# <chr> <chr>
# 1 sample_tuple_file.txt "\"(1,2), (1,\"..."
mytuple = strsplit(mytab$text, '\t')
mytuple = mytuple[[1]]
substring(mytuple[1], 2, 2) # get x value
substring(mytuple[1], 4, 4) # get y value
x = c()
y = c()
for (i in 1:length(mytuple)){
my_x = substring(mytuple[i], 2, 2)
my_y = substring(mytuple[i], 4, 4)
x <- c(x, my_x)
y <- c(y, my_y)
rm(my_x)
rm(my_y)
}
mydata = data.frame(x = x, y = y)
ggplot(data = mydata, aes(x = x, y = y)) +
geom_point()
我有一个包含整数数据元组的文本文件,我想将其绘制成一个简单的图形。 文本文件 ("test.txt") 如下所示。所有元组均由制表符分隔。
文本文件 (test.txt)
(1,2) (1,3) (2,8) (3,12) (5,82) (...)
R-代码
m = read.table('test.txt', header = FALSE, sep='\t')
plot(log(m[,1]), log(m[,2]))
结果我得到
Error in Math.factor(m[,1]): 'log' not meaningful for factors
我能理解的是,我的数据元组不是作为数值而是作为因子读入的。因此,'log'-运算符无法对这些(因子)值进行运算。 所以我的想法是将因子转换为数字,但我无法转换数据。此外,我不确定这是否是我的问题的解决方案。
我想要的是一个以 (x,y) 值为轴的二维图。
也许有人知道如何处理它。
--- 编辑 ---
library(readtext)
library(ggplot2)
DATA_DIR <- system.file("extdata/", package = "readtext")
mytab = readtext(paste0(DATA_DIR, "/hlra/*"))
# readtext object consisting of 1 document and 0 docvars.
# # data.frame [1 x 2]
# doc_id text
# <chr> <chr>
# 1 sample_tuple_file.txt "\"(1,2), (1,\"..."
mytuple = strsplit(mytab$text, ', ')
mytuple = mytuple[[1]]
substring(mytuple[1], 2, 2) # get x value
substring(mytuple[1], 4, 4) # get y value
x = c()
y = c()
for (i in 1:length(mytuple)){
my_x = substring(mytuple[i], 2, 2)
my_y = substring(mytuple[i], 4, 4)
x <- c(x, my_x)
y <- c(y, my_y)
rm(my_x)
rm(my_y)
}
mydata = data.frame(x = x, y = y)
ggplot(data = mydata, aes(x = x, y = y)) +
geom_point()
所以,我已经测试了上面的代码。但它不适用于所有数据。结果图只是第一个值。我重新组织了我的文本文件,所以每个元组都以逗号和制表符结尾。
plot from code above
我对 R 完全陌生,所以我确定我的代码中遗漏了一些明显的错误。顺便说一句,我必须更改一些代码才能在 R-Studio 中获取它 运行(添加缺少的库(ggplot2 和 readtext)并更改文件目录。
假设您有这种文本文件:
(1,2) (1,3) (2,8) (3,12) (5,82) (...)
我推荐使用 read_text
。使用向量和字符串以准备好绘图的格式准备数据。
#if packages aren't yet included in R import them by using R-console
#Command: install.packages("package-name")
#import library "readtext"
library(readtext)
#install library "ggplot2"
library(ggplot2)
#get directory from "readtext"-package which is in my case...
#C:\Users\your_name\Documents\R\win-library.5\readtext\extdata\your_folder\
DATA_DIR <- system.file("extdata/", package = "readtext")
#the textfile you want to plot should be in folder "your_folder"
mytab = readtext(paste0(DATA_DIR, "your_folder/*")
# readtext object consisting of 1 document and 0 docvars.
# # data.frame [1 x 2]
# doc_id text
# <chr> <chr>
# 1 sample_tuple_file.txt "\"(1,2), (1,\"..."
mytuple = strsplit(mytab$text, '\t')
mytuple = mytuple[[1]]
substring(mytuple[1], 2, 2) # get x value
substring(mytuple[1], 4, 4) # get y value
x = c()
y = c()
for (i in 1:length(mytuple)){
my_x = substring(mytuple[i], 2, 2)
my_y = substring(mytuple[i], 4, 4)
x <- c(x, my_x)
y <- c(y, my_y)
rm(my_x)
rm(my_y)
}
mydata = data.frame(x = x, y = y)
ggplot(data = mydata, aes(x = x, y = y)) +
geom_point()