2011-12-08 3 views
4

ggplot에 의해 생성 된 플롯에서 x 축의 각 레이블은 문자열, 즉 "the product in 1990"입니다. 그러나 생성 된 플롯에는 각 단어 사이에 마침표가 있습니다. 즉, 위의 문자열은 "the.product.in.1990"로 표시됩니다.열 이름에 공백이 있어야하는 곳에 마침표가 삽입됩니다.

위의 "."이 추가되지 않도록 어떻게해야합니까?

다음 코드는 내가 x 축을 따라 각 포인트에 대한 문자열을 추가 할 것입니다

last_plot()+scale_x_discrete(limits=ddata$labels$text) 

샘플 코드 :

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) 

ddata$labels$text의 각 행 "은 같은 문자열입니다 1990 년 제품 ". "the.product.in.1990"대신 생성 된 플롯에서 동일한 형식을 유지하고 싶습니다.

+0

의 역 따옴표에 대한 정보도 있습니다 참조하시기 바랍니다 [이] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) 문제를 나타내는 재현 가능한 예제를 제공하는 방법에 대한 질문. – joran

+0

안녕하세요 Andrie, 코딩에 대한 자세한 내용은 백틱으로 설명 할 수 있습니까? –

+0

내 코드는 다음과 같습니다. 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 (세그먼트 (ddata)) + geom_segment (aes (x = x0, y = y0, xend = x1 , yend = y1) last_plot() + scale_x_discrete (limits = ddata $ labels $ text) –

답변

15

공백이 포함 된 열 이름으로 데이터를 읽으려고하기 때문에 문제가 발생합니다.

이 데이터를 read.csv과 함께 읽으면 이러한 열 이름이 구문 적으로 유효한 R 이름으로 변환됩니다. ,

> 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" 

이를 방지하기 위해 인수 check.names=FALSE 사용 :

some.file <- ' 
    "Col heading A", "Col heading B" 
    A, 1 
    B, 2 
    C, 3 
    ' 

기본 read.csv 설정을 읽어

> 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" 

을 여기에 문제를 설명하기 위해 예입니다 이제 나머지 문제는 열 이름에 공백을 포함 할 수 없다는 것입니다. 그래서 이러한 열을 참조하려면 역 따옴표에 열 이름을 포장해야합니다

> x2$`Col heading A` 
[1]  A  B  C  
Levels:   A  B  C 

자세한 내용은 ?read.csv을보고 check.names에 대한 구체적 정보를 제공합니다.

?Quotes

관련 문제