Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用ggplot2生成过滤列的条形图_R_Ggplot2_Dplyr_Data Visualization_Summarize - Fatal编程技术网

R 使用ggplot2生成过滤列的条形图

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

你能告诉我怎样才能画出如图所示的图表吗? 我只想根据房价中值选择每个城市的前2个街区前2个街区,并显示它们的房价中值。当然,如果酒吧的颜色不同就更好了。。 请注意,我手动生成中间价并在Excel中绘制,因此它们不能代表实际值

    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)