- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 ggplot2 中的 facet_wrap 将不同的状态映射到多面图的每个方面。我的代码在这里列出,其中“dataset”是一个数据框,其中包含一个名为“state”的变量,其中包含我希望通过 facet 映射的不同状态的名称。
library(maps)
library(ggplot2)
states <- c('Oklahoma','Arizona','Washington','North
Dakota','Michigan','Florida')
map <- ggplot(data=datatest) + geom_polygon(data=map_data
('state',region=datatest$state),aes
(x=long,y=lat,group=group),colour='black',fill='white') +
facet_wrap(~state,ncol=3)
我无法让每个方面都成为不同状态的 map 。相反,每个方面都是整个美国的 map ,上面列出了六个州。如果有人知道一种方法可以使它在每个方面本身都是不同状态的情况下工作,我将不胜感激。我很确定它与在对 map_data 的调用中定义“区域”的方式有关,但我尝试过的任何方法都不起作用。这可能无法完成,但我想我会看看是否有人有想法。谢谢!
最佳答案
state
列不在 map_data
的返回值中。在那里,您要查找的列称为 region
。此外,至少在您的示例中,没有从 datatest
数据中绘制数据。所以,你可以省略它。
这段代码应该可以工作。请注意,我添加了 scales = "free"
,因为我假设您希望每个状态都填充它对应的方面。
ggplot(map_data('state',region=states)
, aes(x=long,y=lat,group=group)) +
geom_polygon(colour='black',fill='white') +
facet_wrap(~region
, scales = "free"
, ncol=3)
请注意,使用 facet_wrap
将关闭纵横比,因为这些面无法处理 coord_map
控件。为了使情节更好,我建议分别制作每个状态图,然后使用 cowplot
中的 plot_grid
将它们拼接在一起。请注意,cowplot
加载默认主题,因此您需要重置默认值(使用 theme_set
)或明确设置绘图的主题(就像我在这里所做的那样):
sepStates <-
lapply(states, function(thisState){
ggplot(map_data('state',region=thisState)
, aes(x=long,y=lat,group=group)) +
geom_polygon(colour='black',fill='white') +
facet_wrap(~region) +
coord_map() +
theme_void()
})
library(cowplot)
plot_grid(plotlist = sepStates)
如果您想包含来自其他来源的数据,您需要确保它是兼容的。特别是,您需要确保要基于其进行分面的列在两者中都被称为相同的东西。
假设您有以下要添加到图中的数据:
datatest <-
structure(list(zip = c("85246", "85118", "85340", "34958", "33022",
"32716", "49815", "48069", "48551", "58076", "58213", "58524",
"73185", "74073", "73148", "98668", "98271", "98290"), city = c("Chandler",
"Gold Canyon", "Litchfield Park", "Jensen Beach", "Hollywood",
"Altamonte Springs", "Channing", "Pleasant Ridge", "Flint", "Wahpeton",
"Ardoch", "Braddock", "Oklahoma City", "Sperry", "Oklahoma City",
"Vancouver", "Marysville", "Snohomish"), state = c("AZ", "AZ",
"AZ", "FL", "FL", "FL", "MI", "MI", "MI", "ND", "ND", "ND", "OK",
"OK", "OK", "WA", "WA", "WA"), latitude = c(33.276539, 33.34,
33.50835, 27.242402, 26.013368, 28.744752, 46.186913, 42.472235,
42.978995, 46.271839, 48.204374, 46.596608, 35.551409, 36.306323,
35.551409, 45.801586, 48.093129, 47.930902), longitude = c(-112.18717,
-111.42, -112.40523, -80.224613, -80.144217, -81.22328, -88.04546,
-83.14051, -83.713124, -96.608142, -97.30774, -100.09497, -97.407537,
-96.02081, -97.407537, -122.520347, -122.21614, -122.03976)), .Names = c("zip",
"city", "state", "latitude", "longitude"), row.names = c(NA,
-18L), class = c("tbl_df", "tbl", "data.frame"))
看起来像这样:
zip city state latitude longitude
<chr> <chr> <chr> <dbl> <dbl>
1 85246 Chandler AZ 33.27654 -112.18717
2 85118 Gold Canyon AZ 33.34000 -111.42000
3 85340 Litchfield Park AZ 33.50835 -112.40523
4 34958 Jensen Beach FL 27.24240 -80.22461
5 33022 Hollywood FL 26.01337 -80.14422
6 32716 Altamonte Springs FL 28.74475 -81.22328
7 49815 Channing MI 46.18691 -88.04546
8 48069 Pleasant Ridge MI 42.47223 -83.14051
9 48551 Flint MI 42.97899 -83.71312
10 58076 Wahpeton ND 46.27184 -96.60814
11 58213 Ardoch ND 48.20437 -97.30774
12 58524 Braddock ND 46.59661 -100.09497
13 73185 Oklahoma City OK 35.55141 -97.40754
14 74073 Sperry OK 36.30632 -96.02081
15 73148 Oklahoma City OK 35.55141 -97.40754
16 98668 Vancouver WA 45.80159 -122.52035
17 98271 Marysville WA 48.09313 -122.21614
18 98290 Snohomish WA 47.93090 -122.03976
如果你想在州上分面,你需要把它变成与 map 数据相同的格式(即全名和小写),并将列命名为相同的东西(region
而不是状态)。此外,将列名也设置为相同是最简单的。在这里,我添加列以匹配从 map_data
绘制的三个列,并添加一个 region
列以允许分面:
stateList <-
setNames(tolower(state.name), state.abb)
datatest$lat <- datatest$latitude
datatest$long <- datatest$longitude
datatest$group <- NA
datatest$region <- stateList[datatest$state]
现在,您可以向图中添加一条 geom_point()
线,它会正确分面:
ggplot(map_data('state',region=states)
, aes(x=long,y=lat,group=group)) +
geom_polygon(colour='black',fill='white') +
geom_point(data = datatest) +
facet_wrap(~region
, scales = "free"
, ncol=3)
给予
或者,您可以将它添加到 cowplot
方法中(请注意,我现在只是标题并跳过分面)。
sepStates <-
lapply(states, function(thisState){
ggplot(map_data('state',region=thisState)
, aes(x=long,y=lat,group=group)) +
geom_polygon(colour='black',fill='white') +
geom_point(data = datatest[datatest$region == tolower(thisState), ]) +
ggtitle(thisState) +
coord_map() +
theme_void() +
theme(plot.title = element_text(hjust = 0.5))
})
plot_grid(plotlist = sepStates)
给予
关于r - 使用 facet wrap 在 R 中映射不同状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44814768/
我完全迷失在链接和 Solr 术语的世界中。我目前有一个日期字段,但如果可能的话,我想“进一步”面对它。 一个例子: 字段:日期 领域:语言 所以如果我运行这个查询: http://host:port
有没有办法通过属性的值为 null 或空字符串来过滤命中? 即,向我展示所有没有作者的对象 facetFilters=作者:空 facetFilters=作者:'' 或者将其包含在 OR 值列表中?
C++ 标准库中有一些标准基类方面,其默认行为依赖于经典的“C”语言环境 (std::locale::classic())。如果您的程序需要特定于文化的功能,那么切换到派生类方面(又名 byname
使用这个 SO solution我创建了一个包含两个“空”图的 facet,目的是与另一组 facet_wrap 图组合,如下所示。目的是为不同的单位测量设置两个 y 轴标签。如何使网格布局看起来像顶
我在 SOLR 索引中存储了大量文档。我想执行一个查询,返回指定字段的 Facet 计数,并返回每个 Facet 字段 的前 100 个文档。 例如。假设我的 SOLR 索引中存储了一堆书。 { na
我使用 Solr 4.7.0 有一个大约 500 万个文档的 Solr 索引,大小为 8GB。我需要在 Solr 中分组,但发现它太慢了。下面是组配置: group=on group.facet=on
Elasticsearch Histogramfacet似乎不支持 all_terms = true(即:即使 count=0 也返回 facetvalue/bucket) 这是正确的吗? 最佳答案
有$facet自 3.4 以来 mongo 中的聚合阶段 -这个很酷。它允许在同一个输入文档集的单个阶段内处理多个聚合管道。 但它不允许在另一个 $facet 中使用一个 $facet。引用:“任何其
我在 solr 中使用 Stats 组件来获取分面统计数据,效果很好,现在我有兴趣对我的日期字段执行相同的操作。但是在统计模块中使用 facet.date 字段似乎不起作用,有没有办法让它工作? 我的
我正在尝试将多个图与方面对齐。我的问题有点小但很烦人:我可以制作一个绘图,以便绘图区域对齐并且刻面本身对齐,但是刻面条的宽度并不完全相同。如果刻面的标签长度不同,则刻面条的大小将调整为使文本适合刻
我在 R 中有一个数据框,我想在分面 ggplot 条形图中绘制它。 我在 ggplot 中使用此代码: ggplot(data_long, aes(x = partei, y = wert, fil
我在 Eclipse Java EE IDE 中有一个面向 Web 开发人员的 Maven 项目。但是当我启用 JPA 方面时,我无法选择 JPA(没有 JPA 选项)。我是否忘记包含一些依赖项? 我
我使用 ggplot 绘制了一个分面图这是情节 我的问题是,刻面(标签)按字母顺序排序(例如:E1、E10、E11、E13、E2、E3、I1、I10、I2)但我需要它们是像 E1、I1、E2 这样的自
我正在尝试在 Intellij IDEA 14 中运行播放框架应用程序。 我安装了 Scala 插件并需要所有 jar 文件。 但是在 Project-Structure -> Facet 中,我在添
我正在使用命令 qplot(factor(ww), WeeklyYield, geom = "bar", fill = I("grey50"))+facet_wrap(~model+name) 为 m
最近我发现了 python 可视化库“Facets”,想知道我是否可以离线生成 html 输出。 我正在使用 chrome 浏览器和 webcomponents-lite.js不需要。 另外,我在我的
我正在测试可用在 https://www.primefaces.org/showcase/ui/overlay/dialog/loginDemo.xhtml 的 PrimeFaces 示例.我在 Ec
我想在solr响应的过滤查询(fq)中传递逗号分隔的值,当前,当我想传递多个类别时,我使用OR运算符。 像这样fq = categoryId:3 OR categoryId:55 OR categor
我有以下 Elasticsearch 映射 { "mappings": { "hotel": { 'properties': {"name": {
我正在尝试从 solr 获取字段的唯一值。我已经使用facet来获取字段值。我的方面查询参数看起来像 - SolrQuery query = new SolrQuery();
我是一名优秀的程序员,十分优秀!