In the plot generated by ggplot, each label along the x-axis is a string, i.e., “the product in 1990”. However, the generated plot there is a period in between each word. In other words, the above string is shown as “the.product.in.1990”
How can I ensure the above “.” is not added?
The following code is what I used to add string for each point along the x-axis
last_plot()+scale_x_discrete(limits=ddata$labels$text)
Sample code:
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)
each row of ddata$labels$text
is a string, like "the product in 1990".
I would like to keep the same format in the generated plot rather than "the.product.in.1990"
The issue arises because you are trying to read data with column names that contain spaces.
When you read this data with read.csv
these column names are converted to syntactically valid R names. Here is an example to illustrate the issues:
some.file <- '
"Col heading A", "Col heading B"
A, 1
B, 2
C, 3
'
Read it with the default read.csv
settings:
> 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"
To avoid this, use the argument 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"
Now, the remaining issue is that a column name can not contain spaces. So to refer to these columns, you need to wrap your column name in backticks:
> x2$`Col heading A`
[1] A B C
Levels: A B C
For more information, see ?read.csv
and specifically the information for check.names
.
There is also some information about backticks in ?Quotes
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With