R 使用ggplot2生成过滤列的条形图
你能告诉我怎样才能画出如图所示的图表吗? 我只想根据房价中值选择每个城市的前2个街区前2个街区,并显示它们的房价中值。当然,如果酒吧的颜色不同就更好了。。 请注意,我手动生成中间价并在Excel中绘制,因此它们不能代表实际值R 使用ggplot2生成过滤列的条形图,r,ggplot2,dplyr,data-visualization,summarize,R,Ggplot2,Dplyr,Data Visualization,Summarize,你能告诉我怎样才能画出如图所示的图表吗? 我只想根据房价中值选择每个城市的前2个街区前2个街区,并显示它们的房价中值。当然,如果酒吧的颜色不同就更好了。。 请注意,我手动生成中间价并在Excel中绘制,因此它们不能代表实际值 glimpse(CityNeighbourhoodPrice) Observations: 37,245 Variables: 3 $ City <fct> Amsterdam, Amsterdam, Amsterdam... $ Ne
glimpse(CityNeighbourhoodPrice)
Observations: 37,245
Variables: 3
$ City <fct> Amsterdam, Amsterdam, Amsterdam...
$ Neighbourhood <fct> A,B,C,D,E,F,G,H,I,J,K...
$ Price <int> 970, 1320, 2060, 2480, 1070, 12...
另一个解决办法可以是: 假设您的数据如下所示:
library(dplyr)
library(ggplot)
data <- data.frame(Price=c(970, 245, 564, 895, 431, 100), City=c("Amsterdam", "Athens", "Amsterdam", "London", "Berlin", "Netherlands"), Neighborhood=c("A", "B", "D", "C", "E", "F"))
然后你会:
example_plot <- data %>%
select(Price, City, Neighborhood) %>%
group_by(City) %>%
top_n(., 2, wt=Price) %>%
spread(Neighborhood, Price) %>%
data.frame %>%
mutate(., Average=rowMeans(.[,-1], na.rm = TRUE)) %>%
ggplot(., aes(City, Average, fill=City)) +
ggtitle(str_wrap(c("Median Price for the Top-2 Neighborhoods in Different Cities:"), 20)) +
theme_fivethirtyeight() +
theme(legend.position = "none", plot.title = element_text(size= 22), axis.text = element_text(size=14))+
geom_bar(stat = "identity") +
geom_text(aes(x = City, y = Average, label = Average ), colour = "white", size = 11, vjust=1.2)
它给了你:
使用一些随机示例数据,尝试以下操作: 示例数据 第42集 城市第八区价格% 组别按城市、邻里%>% summariseMedPrice=medianPrice,na.rm=TRUE%>% 排名靠前的n2,价格%>% 解组%>% 安排城市,医疗价格%>% mutateCity_Neighbourth=Paste0Neighbourth\n,城市, 城市邻里=猫::fct\u有序邻里%>% ggplotaesx=城市\居民区,y=医疗价格+ geom_colfill=tomato3,宽度=0.5+ labstitle=有序条形图, 副标题=各物业类型的平均价格, 字幕=图像:5+ themeaxis.text.x=element\u textangle=65,vjust=0.6
由v0.3.0于2020年4月20日创建,请在问题中包含数据集或数据集的子集。看起来你只需要城市、街区和价格的数据。也许可以解释字母A,B,C。。。它们的意思和来源。字母A,B,C。。。也就是说,它们似乎反映了某种程度的顶端度——这是如何定义的,或者这个属性的变量是什么?抱歉,仅允许5分钟编辑评论!嗨,对不起。A,B,C是指邻里!我相信问题中提供了数据集?我只想选择前两个街区。前两个街区是根据中间价格确定的。我将澄清问题@PeterThanks。您提供了数据集的视图,但复制和粘贴数据集并不容易,因此无法使用它回答问题。你能提供一个摘录吗?也许可以使用数据帧形式的dput,只包括适用于你的问题的变量。如果您不确定,请参阅以获取如何执行此操作的示例。这将使其他人更容易帮助你。对不起,我不知道如何使用dput,我已经编辑了我的问题,只包含了所需的变量。对不起,Stefan提供的输出与我的预期最为相似,因为我预计每个城市将分为两个街区。非常感谢你的努力!
example_plot <- data %>%
select(Price, City, Neighborhood) %>%
group_by(City) %>%
top_n(., 2, wt=Price) %>%
spread(Neighborhood, Price) %>%
data.frame %>%
mutate(., Average=rowMeans(.[,-1], na.rm = TRUE)) %>%
ggplot(., aes(City, Average, fill=City)) +
ggtitle(str_wrap(c("Median Price for the Top-2 Neighborhoods in Different Cities:"), 20)) +
theme_fivethirtyeight() +
theme(legend.position = "none", plot.title = element_text(size= 22), axis.text = element_text(size=14))+
geom_bar(stat = "identity") +
geom_text(aes(x = City, y = Average, label = Average ), colour = "white", size = 11, vjust=1.2)