R ggplot2:以非字母顺序保留x轴标签
我用ggplot2来绘制各州每年发生的事件。我希望状态标签的顺序与数据表AZ CT NH NM DE中所示的顺序相同。。。但是ggplot会自动按照字母顺序重新组织州标签。。。。我创建了组,以便以num值(例如NM和TN)显示范围。请忽略组编号-我取出了一些数据点,以使表格更小 我尝试了以前帖子的建议,使用因子和级别,如下所示:R ggplot2:以非字母顺序保留x轴标签,r,ggplot2,R,Ggplot2,我用ggplot2来绘制各州每年发生的事件。我希望状态标签的顺序与数据表AZ CT NH NM DE中所示的顺序相同。。。但是ggplot会自动按照字母顺序重新组织州标签。。。。我创建了组,以便以num值(例如NM和TN)显示范围。请忽略组编号-我取出了一些数据点,以使表格更小 我尝试了以前帖子的建议,使用因子和级别,如下所示: guidelines$state <- factor(guidelines$state, levels = unique(guidelines$state) 但
guidelines$state <- factor(guidelines$state, levels = unique(guidelines$state)
但它不起作用,因为我使用的是组和重复的州名称。有什么办法可以解决这个问题吗?试试这个。你必须使用unique。在因子中添加ordered=T将保持所需的顺序。下面的代码请下次使用dput共享您的数据,因为有时使用屏幕截图中的数据会很复杂,因为它们非常大:
library(ggplot2)
#Data
guidelines <- data.frame(state=c('AZ','CT','NH','NM','NM','DE','NJ','TN','TN'),
num=c(10,10,10,5,10,5,5,2,5),
grp=c(3,4,17,19,19,5,18,25,25),stringsAsFactors = F)
#Format factor
guidelines$state <- factor(guidelines$state,levels = unique(guidelines$state),ordered = T)
#Plot
ggplot(guidelines, aes(x = state, y = num, group = grp)) +
geom_point() + geom_line(linetype = "dotted") +
labs(x = "State", y = "Number") +
labs(title = "A") +
scale_y_continuous(breaks = seq(0, 11, 1),
limits=c(0,11))
输出:
我们可以使用订购的
-输出
我想你是在寻找scale_x_discrete请不要将数据添加为图像。阅读并了解如何给出建议。
library(ggplot2)
#Data
guidelines <- data.frame(state=c('AZ','CT','NH','NM','NM','DE','NJ','TN','TN'),
num=c(10,10,10,5,10,5,5,2,5),
grp=c(3,4,17,19,19,5,18,25,25),stringsAsFactors = F)
#Format factor
guidelines$state <- factor(guidelines$state,levels = unique(guidelines$state),ordered = T)
#Plot
ggplot(guidelines, aes(x = state, y = num, group = grp)) +
geom_point() + geom_line(linetype = "dotted") +
labs(x = "State", y = "Number") +
labs(title = "A") +
scale_y_continuous(breaks = seq(0, 11, 1),
limits=c(0,11))
#Data
guidelines <- data.frame(state=c('AZ','CT','NH','NM','NM','DE','NJ','TN','TN'),
num=c(10,10,10,5,10,5,5,2,5),
grp=c(3,4,17,19,19,5,18,25,25),stringsAsFactors = F)
#Plot 2
ggplot(guidelines, aes(x = state, y = num, group = grp)) +
geom_point() + geom_line(linetype = "dotted") +
labs(x = "State", y = "Number") +
labs(title = "A") +
scale_y_continuous(breaks = seq(0, 11, 1),
limits=c(0,11))+
scale_x_discrete(limits=unique(guidelines$state))
library(dplyr)
library(ggplot2)
guidelines %>%
mutate(state =ordered(state, levels = unique(state))) %>%
ggplot(aes(x = state, y = num, group = grp)) +
geom_point() +
geom_line(linetype = "dotted") +
labs(x = "State", y = "Number") +
labs(title = "A") +
scale_y_continuous(breaks = seq(0, 11, 1),
limits=c(0,11))