如何将Unicode代码点读入R数据帧
我有一个两列的Unicode代码感兴趣点文本文件(本测试中为希腊符号,但通常为任意一组Unicode字符): 我想把它读入R,这样我就可以在我用来绘制包含数学符号或其他Unicode符号的绘图的字体上踩轮胎了 作为一个可重复性最低的开始,我首先从这个Unicode表中随机抽取一个样本:如何将Unicode代码点读入R数据帧,r,unicode,R,Unicode,我有一个两列的Unicode代码感兴趣点文本文件(本测试中为希腊符号,但通常为任意一组Unicode字符): 我想把它读入R,这样我就可以在我用来绘制包含数学符号或其他Unicode符号的绘图的字体上踩轮胎了 作为一个可重复性最低的开始,我首先从这个Unicode表中随机抽取一个样本: set.seed(42) df <- data.frame(date = 1:10 , value = cumsum(runif(10 , max = 10)) ) ut <- read.ta
set.seed(42)
df <- data.frame(date = 1:10 , value = cumsum(runif(10 , max = 10)) )
ut <- read.table("ut.txt", allowEscapes=TRUE)
df$labels <- paste("\\", sample(ut$V1, size=10), sep="")
当我从labels
列打印时,R会写出文字字符串,而不是它所表示的Unicode字符:
library(ggplot2)
p <- ggplot(df, aes(x=date, y=value, label=labels))
p <- p + geom_line()
p <- p + ggtitle("5\u03BCg (\u03C7-squared test)") # control title
p <- p + geom_text()
library(Cairo)
ggsave("test.pdf", device=cairo_pdf)
库(ggplot2)
p这里有一种使用scale\u shape\u手册
的方法。我包含了如何输入您数据的代码,因此我不必阅读文本文件
set.seed(42)
df <- data.frame(date = 1:10 , value = cumsum(runif(10 , max = 10)) )
df <- df[1:6, ]
## Following line stands in for what you read from `read.table`. In your solution, just use what you got from `read.table`
df$labels <- c("\u03A8", "\u03BB", "\u03C4", "\u039C", "\u03A6", "\u03C2")
library(ggplot2)
p <- ggplot(df, aes(x=date, y=value, shape = labels))
p <- p + geom_line()
p <- p + ggtitle("5\u03BCg (\u03C7-squared test)") # control title
p <- p + geom_point(size = 5) + scale_shape_manual(values = df$labels)
p
set.seed(42)
df它还可与geom_text()
(无限感谢@astrofunkswag以其巧妙的方式教会我们如何正确地包含符号):
输出:
谢谢。我可能应该澄清一下:如何从文本文件中读取标签,如原始问题中所述?我的问题不是手动键入列向量的内容。我的错误是,读取为read.table(…,fileEncoding=“UTF-8”)
对我来说很有效。我不清楚read中的一行额外代码是否比plotting函数中的一行额外代码好,但这取决于您:)这肯定比手动输入数百个符号要好!您不必手动输入它们!您只需读入代码并使用这些代码(例如“\u03A8”),就像您在提供数据帧的头部时所做的那样。根本不需要手动输入你能读懂代码,对吗?(例如“\u03A8”)因此,我提供了一个解决方案来处理这些问题,以获得所需的特殊字符。我包括了一行,我在向量中输入代码,这样我就不必创建文本文件并读取它。你的read命令将取代我的矢量代码。您也可以直接读取unicode字符(例如Δ),但用手工编码两个答案的编码量基本相同,这很荒谬。你可以使用ut$V2
而不是我在便笺中说的,我可以使用ut$V2
。我的问题是关于使用第一列。df$标签
library(ggplot2)
p <- ggplot(df, aes(x=date, y=value, label=labels))
p <- p + geom_line()
p <- p + ggtitle("5\u03BCg (\u03C7-squared test)") # control title
p <- p + geom_text()
library(Cairo)
ggsave("test.pdf", device=cairo_pdf)
set.seed(42)
df <- data.frame(date = 1:10 , value = cumsum(runif(10 , max = 10)) )
df <- df[1:6, ]
## Following line stands in for what you read from `read.table`. In your solution, just use what you got from `read.table`
df$labels <- c("\u03A8", "\u03BB", "\u03C4", "\u039C", "\u03A6", "\u03C2")
library(ggplot2)
p <- ggplot(df, aes(x=date, y=value, shape = labels))
p <- p + geom_line()
p <- p + ggtitle("5\u03BCg (\u03C7-squared test)") # control title
p <- p + geom_point(size = 5) + scale_shape_manual(values = df$labels)
p
library(ggplot2)
#Code
ggplot(df, aes(x=date, y=value))+
geom_line()+
ggtitle("5\u03BCg (\u03C7-squared test)")+
geom_text(label=c("\u03A8", "\u03BB", "\u03C4", "\u039C", "\u03A6", "\u03C2"))