我想知道是否有一种从一张桌子生成较小条形图的有效方法。我的目标是生成干净的图形,而不是一个难以读取的密集图形。有没有办法在没有简单编码的情况下做到这一点?源表位于data.frame
对象类型中。
答案 0 :(得分:2)
以下是四个不同的情节,其中一个可能是您喜欢的。
library(ggplot2) # plotting and the diamonds data set
library(dplyr) # needed for the filter function
# Unwanted 'dense' graph
g1 <-
ggplot(diamonds) +
aes(x = cut, fill = color) +
geom_bar() +
ggtitle("g1: stacked bar plot")
# or
g2 <-
ggplot(diamonds) +
aes(x = cut, fill = color) +
geom_bar(position = position_dodge()) +
ggtitle("g2: dodged bar plot")
# different option, layered bars
g3 <-
ggplot() +
aes(x = cut, fill = color) +
geom_bar(data = filter(diamonds, color == "D"), width = 0.90) +
geom_bar(data = filter(diamonds, color == "E"), width = 0.77) +
geom_bar(data = filter(diamonds, color == "F"), width = 0.63) +
geom_bar(data = filter(diamonds, color == "G"), width = 0.50) +
geom_bar(data = filter(diamonds, color == "H"), width = 0.37) +
geom_bar(data = filter(diamonds, color == "I"), width = 0.23) +
geom_bar(data = filter(diamonds, color == "J"), width = 0.10) +
ggtitle("g3: overlaid bar plot")
# facet plot
g4 <-
ggplot(diamonds) +
aes(x = cut) +
geom_bar() +
facet_wrap( ~ color)