在ggplot生成的图中,沿x轴的每个标签都是一个字符串,即"1990年的产品".但是,生成的绘图在每个单词之间存在一段时间.换句话说,上面的字符串显示为"the.product.in.1990"
如何确保不添加上述"."?
以下代码是我用于沿x轴为每个点添加字符串的代码
last_plot()+scale_x_discrete(limits=ddata$labels$text)
Run Code Online (Sandbox Code Playgroud)
示例代码:
library(ggdendro)
x <- read.csv("test.csv",header=TRUE)
d <- as.dist(x,diag=FALSE,upper=FALSE)
hc <- hclust(d,"ave")
dhc <- as.dendrogram(hc)
ddata <- dendro_data(dhc,type="rectangle")
ggplot(segment(ddata)) + geom_segment(aes(x=x0,y=y0,xend=x1,yend=y1))
last_plot() + scale_x_discrete(limits=ddata$labels$text)
Run Code Online (Sandbox Code Playgroud)
每一行ddata$labels$text都是一个字符串,就像"1990年的产品".我想在生成的图中保留相同的格式而不是"the.product.in.1990"
And*_*rie 16
出现此问题的原因是您尝试读取包含空格的列名称的数据.
当您使用read.csv这些列名称读取此数据时,将转换为语法上有效的R名称.以下是一个说明问题的示例:
some.file <- '
"Col heading A", "Col heading B"
A, 1
B, 2
C, 3
'
Run Code Online (Sandbox Code Playgroud)
使用默认read.csv设置读取它:
> x1 <- read.csv(text=some.file)
> x1
Col.heading.A Col.heading.B
1 A 1
2 B 2
3 C 3
4 NA
> names(x1)
[1] "Col.heading.A" "Col.heading.B"
Run Code Online (Sandbox Code Playgroud)
要避免这种情况,请使用以下参数check.names=FALSE:
> x2 <- read.csv(text=some.file, check.names=FALSE)
> x2
Col heading A Col heading B
1 A 1
2 B 2
3 C 3
4 NA
> names(x2)
[1] "Col heading A" "Col heading B"
Run Code Online (Sandbox Code Playgroud)
现在,剩下的问题是列名称不能包含空格.因此,要引用这些列,您需要在反引号中包装列名:
> x2$`Col heading A`
[1] A B C
Levels: A B C
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅?read.csv具体信息check.names.
还有一些关于反叛的信息 ?Quotes