我正在尝试让我的头脑围绕 ggplot2 创建美丽的图表,你可能都知道 :)
我有一个数据集,其中包含一些已售房屋的交易(由: http: //support.spatialkey.com/spatialkey-sample-csv-data/提供)
我想要一个折线图,在 x 轴上绘制城市,4 条线显示我的数据文件中每个城市的 4 种家庭类型中的每一种的交易数量。听起来不太难,所以我找到了两种方法来做到这一点。
- 使用中间表进行计数和geom_line()绘制结果
- 在我的原始数据框上使用geom_freqpoly()
基本图表看起来相同,但图表 nr。2 似乎缺少计数的所有 0 值的图(例如,对于 SACRAMENTO 右侧的城市,没有 Condo、Multi-Family 或 Unknown 的数据(在此图中似乎完全缺失))。
我个人比方法 1 更喜欢方法 2 的语法(这可能是个人的事情)。
所以我的问题是:我做错了什么还是有一种方法可以在方法 2 中绘制 0 个计数?
# line chart example
# setup the libraries
library(RCurl) # so we can download a dataset
library(ggplot2) # so we can make nice plots
library(gridExtra) # so we can put plots on a grid
# get the data in from the web straight into a dataframe (all data is from: http://support.spatialkey.com/spatialkey-sample-csv-data/)
data <- read.csv(text=getURL('http://samplecsvs.s3.amazonaws.com/Sacramentorealestatetransactions.csv'))
# create a data frame that counts the number of trx per city/type combination
df_city_type<-data.frame(table(data$city,data$type))
# correct the column names in the dataframe
names(df_city_type)<-c('city','type','qty')
# alternative 1: create a ggplot with a geom_line on the calculated values - to show the nr. trx per city (on the x axis) with a differenct colored line for each type
cline1<-ggplot(df_city_type,aes(x=city,y=qty,group=type,color=type)) + geom_line() + theme(axis.text.x=element_text(angle=90,hjust=0))
# alternative 2: create a ggplot with a geom_freqpoly on the source data - - to show the nr. trx per city (on the x axis) with a differenct colored line for each type
c_line <- ggplot(na.omit(data),aes(city,group=type,color=type))
cline2<- c_line + geom_freqpoly() + theme(axis.text.x=element_text(angle=90,hjust=0))
# plot the two graphs in rows to compare, see that right of SACRAMENTO we miss two lines in plot 2, while they are in plot 1 (and we want them)
myplot<-grid.arrange(cline1,cline2)