我想在内布拉斯加州的县地图中使用图案(条纹等)来区分县,而不是颜色。下面的代码可以工作,但我无法让线条变得漂亮、简单、实线。它们总是显示为带有边框的粗线,这很丑陋。如何使我的图案只是不同角度的简单线条,其中一些是虚线,一些是实线?ggpattern 包的文档对我来说只是令人困惑。
ggplot(ne_counties_dataframe) + geom_sf(data = ne_counties_dataframe, color = 'black', lwd = 0.5) +
geom_sf_pattern(aes(pattern = Both, pattern_color = 'white', pattern_fill = Both, pattern_density = 0.1))
“两者”是包含 3 个因素的列:“两者”、“两者都不是”和“低收入”。我希望本专栏的模式有所不同。谢谢。
你快到了!
尝试理解 的机制
{ggplot2}
,特别是阅读aesthetics
. 我建议您将美学分为 (映射)aesthetics
和 (固定)parameters
。这并不是一件小事......但它可以帮助您导航。
该扩展
{ggpattern}
使用相同的规则。根据经验:
aes()
关键点是:您通常希望映射是多个值(也称为列中的不同值),而参数是固定值/单例(例如“白色”、NA、0.5 等)。
您没有提供可重现的示例,因此我使用了一组快速的欧洲国家,并以简单的方式添加了该
Both
列。我们将其插入 ggplot 和 ggpattern 中:这会产生一个图,其中
Both
用于确定填充的情况,然后确定实际的填充模式NA
(请注意,您可以将颜色设置为类似于在底图中所做的颜色)如果您绘制了图表,您将看到 ggplot 创建了图案密度和图案填充的图例。这表明 ggplot 试图将这些价值观映射为美学。您还应该注意到,“颜色”图例显示为“白色”(您使用的文本标签),但显示为“红色”(ggplot 的第一个离散默认颜色 - 因为它将单个值映射到第一个默认颜色 [如果您尚未定义另一个调色板)。
对于虚线、实线等图案,请查看文档
{ggpattern}
,或者也许其他人可以在这里提供帮助。我没有使用这个扩展。但我确信有一种方法可以控制条纹的类型(实线、虚线、点划线)或定义个人图案并通过图层将它们插入scale_magicstripetypes()
。一种选择是映射
pattern_angle
到县名等。您可以使图案填充灰色,关闭图案颜色,并减小图案比例以使其更小: