在 ggplot 上从 data.frame 订购
Order from data.frame on ggplot
我有数据框:
values <- c("a", "d", "b", "c", "e", "f")
n <- c(1463, 159, 54, 52, 52, 220)
frequency <- c(0.7315, 0.0795, 0.027, 0.026, 0.026, 0.11)
tmp <- as.data.frame(cbind(values, n, frequency))
而且我想绘制 geom_bar 这个数据(x = 值,y = 频率)但是绘图的数据应该像在数据框中一样排序(a,d,b, c、e、f)。不幸的是,ggplot 自动对列值进行排序,我得到 (a、b、c、d、e、f)。情节代码:
ggplot(data=tmp, aes(x=values, y=frequency)) +
geom_bar(fill="#003366", stat="identity") +
labs(title = "...", x = "values", y = "Frequency")
我应该在 plot 函数中更改什么来解决我的问题?
可以使用 factor
函数重新排序因子的水平。
values <- c("a", "d", "b", "c", "e", "f")
n <- c(1463, 159, 54, 52, 52, 220)
frequency <- c(0.7315, 0.0795, 0.027, 0.026, 0.026, 0.11)
tmp <- as.data.frame(cbind(values, n, frequency))
# reorder using factor
tmp$values = factor(tmp$values, levels = values)
ggplot(data=tmp, aes(x=values, y=frequency)) +
geom_bar(fill="#003366", stat="identity") +
labs(title = "...", x = "values", y = "Frequency")
我有数据框:
values <- c("a", "d", "b", "c", "e", "f")
n <- c(1463, 159, 54, 52, 52, 220)
frequency <- c(0.7315, 0.0795, 0.027, 0.026, 0.026, 0.11)
tmp <- as.data.frame(cbind(values, n, frequency))
而且我想绘制 geom_bar 这个数据(x = 值,y = 频率)但是绘图的数据应该像在数据框中一样排序(a,d,b, c、e、f)。不幸的是,ggplot 自动对列值进行排序,我得到 (a、b、c、d、e、f)。情节代码:
ggplot(data=tmp, aes(x=values, y=frequency)) +
geom_bar(fill="#003366", stat="identity") +
labs(title = "...", x = "values", y = "Frequency")
我应该在 plot 函数中更改什么来解决我的问题?
可以使用 factor
函数重新排序因子的水平。
values <- c("a", "d", "b", "c", "e", "f")
n <- c(1463, 159, 54, 52, 52, 220)
frequency <- c(0.7315, 0.0795, 0.027, 0.026, 0.026, 0.11)
tmp <- as.data.frame(cbind(values, n, frequency))
# reorder using factor
tmp$values = factor(tmp$values, levels = values)
ggplot(data=tmp, aes(x=values, y=frequency)) +
geom_bar(fill="#003366", stat="identity") +
labs(title = "...", x = "values", y = "Frequency")