我正试着绕过ggplot2来创建漂亮的图形,你可能都知道:)
我有一个数据集,其中包含一些已售出房屋的交易(图片提供:http://support.spatialkey.com/spatialkey-sample-csv-data/)
我希望有一个折线图,用于绘制x轴上的城市,4行显示4个家庭类型中每个城市的每个城市的数据文件中的事务数。听起来不太难,所以我发现了两种方法。
基本图表看起来相同,但是图表nr。 2似乎缺少计数的所有0值的图(例如,对于SACRAMENTO的城市,没有公寓,多家庭或未知的数据(在该图中似乎完全没有))。
我个人更喜欢方法编号2的语法而不是编号1的语法(可能是个人的东西)。
所以我的问题是:我做错了什么,或者是否有一种方法可以在方法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)
答案 0 :(得分:2)
正如@joran指出的那样,当使用“连续”值时,这给出了一个“相似”的图:
ggplot(data, aes(x=as.numeric(factor(city)), group=type, colour=type)) +
geom_freqpoly(binwidth=1)
然而,这并不完全相同(比较图表的开头),因为休息被搞砸了。它的宽度为1,而不是从1到39以binwidth为1进行分箱,而是从0.5开始直到39.5。