R 如何更改ggplot中的轴标签?

R 如何更改ggplot中的轴标签?,r,ggplot2,R,Ggplot2,我在R中创建了一个柱状图。目前,数字1-8被写在x轴上,每个数字都是一个条形图。我想把数字改成风向,例如,应该是西风,而不是1。 我试过: scale_x_discrete(labels=c("1" = "North", "2" = "North East", "3" = "East", "4"= "South East", "5"= "South", "6"="South West", "7"="West", "8"="North West")) 但不起作用。我也试过: scale_x_di

我在R中创建了一个柱状图。目前,数字1-8被写在x轴上,每个数字都是一个条形图。我想把数字改成风向,例如,应该是西风,而不是1。 我试过:

scale_x_discrete(labels=c("1" = "North", "2" = "North East", "3" = "East", "4"= "South East", "5"= "South", "6"="South West", "7"="West", "8"="North West"))
但不起作用。我也试过:

scale_x_discrete(breaks=c("1","2","3", "4", "5", "6", "7", "8"), labels=c("North", "North East", "East", "South East", "South", "South West", "West", "North West"))
这是我的剧本:

options(stringsAsFactors = FALSE)

input1 <- "C:\\Users\\wind_direction.csv"

wind_direction <- read.csv(input1, sep=";")
library(ggplot2)

p3 <- ggplot(wind_direction, aes(x=winddirection)) + 
  geom_bar(color="black", fill="grey", width=0.9)+ 
  theme_bw() +
  scale_y_continuous(limits = c(0, 55), breaks = seq(0,55,10),expand=c(0,0)) +
  scale_x_discrete(labels = c("1" = "North", "2" = "North East", "3" = "East", "4"= "South East", "5"= "South", "6"="South West", "7"="West", "8"="North West"))

print(p3)

我认为您的代码做得很好,一个快速的解决方案就是用aesx=as.characterwinddirection或aesx=as.factorwinddirection替换aesx=winddirection

所以,当你把winddirection映射到x时,你只需要确保winddirection是字符或因子


只要确保你有正确的标签。您在问题中提到1应该是西部,但在scale_x_离散中,您声明1是北部。

您能以dput格式发布示例数据吗?请使用dputwind_direction的输出编辑问题。或者,如果dputheadwind_direction的输出太大,则为20。您是否尝试过用aesx=as.characterwinddirection替换aesx=winddirection?看看是否有帮助。非常感谢您提供的所有答案@瓦伦丁:我用aesx=as.characterwinddirection或aesx=as.factorwinddirection替换了aesx=winddirection。但不幸的是,它给了我一个错误:美学必须是长度1或与数据224:x相同。它对我有用。试着给它一个干净的运行清洁您的环境,然后再次运行。听起来可能是您在数据中编辑了某些内容。帧风向如果我在aesx=as.characterwinddirection中使用风向而不是winddirection,我可以复制您的错误。可能是这样吗?非常感谢。现在它正在工作。我使用了aesx=as.characterwinddirection,但正确的形式是aesx=as.characterwinddirection,这很容易混淆,因为您无法将数据帧wind\u方向映射到x,而只能映射到列winddirection。你有没有换过他们的名字?很抱歉把你弄糊涂了。是的,我无意中在脚本中交换了他们的名字。我的excel文件名为wind_direction,列名为winddirection。因此,我写了:aesx=as.characterwinddirection。现在它正在工作。
head(wind_direction)
         day     time winddirection
1 31.07.2018 12:51:57             3
2 31.07.2018 12:55:16             3
3 31.07.2018 12:56:29             3
4 31.07.2018 13:25:05             3
5 31.07.2018 13:36:54             3
6 31.07.2018 13:55:37             3