【问题标题】:r: Choropleth map according to hierarchial clustering using cutree()r:根据使用 cutree() 的层次聚类的 Choropleth 图
【发布时间】:2016-05-29 14:00:22
【问题描述】:

我正在对 50 个不同的非洲国家/地区的两个参数(X1、X2)进行层次聚类。因此,我想确定非洲大陆内的 5 个不同的群体/集群。我正在使用以下代码:

hc <- hclust(dist(df), method = "complete")
member <- cutree(hc, 5)

现在,我想使用存储在 member 中的信息(即每个国家所属的集群 ID)来为非洲地图着色,以便每个集群都用另一种颜色表示。我知道有很多关于着色图的教程,比如this。但我想知道是否有针对层次聚类分析结果量身定制的特定地图着色方法

有人做过吗?对于如何以最有效的方式实现这一目标的任何建议或提示,我很高兴!

(缩放)数据如下:

df <- structure(list(Country = structure(1:50, .Label = c("Angola", 
"Benin", "Botswana", "Burkina Faso", "Burundi", "Cabo Verde", 
"Cameroon", "Central African Republic", "Chad", "Comoros", "Congo", 
"Cote d'Ivoire", "Democratic Republic of Congo", "Djibouti", 
"Equatorial Guinea", "Eritrea", "Ethiopia", "Gabon", "Gambia", 
"Ghana", "Guinea", "Guinea-Bissau", "Kenya", "Lesotho", "Liberia", 
"Madagascar", "Malawi", "Mali", "Mauritania", "Mauritius", "Mozambique", 
"Namibia", "Niger", "Nigeria", "Reunion", "Rwanda", "Sao Tome and Principe", 
"Senegal", "Seychelles", "Sierra Leone", "Somalia", "South Africa", 
"South Sudan", "Sudan", "Swaziland", "Tanzania", "Togo", "Uganda", 
"Zambia", "Zimbabwe"), class = "factor"), X1 = c(-0.18, -1.03, 
0.6, 1.55, 0.22, 0.26, 0.76, 2.15, -1.43, 0.99, 1.79, -0.39, 
1.73, 1.57, 1.11, -0.09, -1.49, -0.46, -0.48, -1.22, -0.78, -1.46, 
-1.22, 0.35, 0.45, 1.29, -1.37, -0.61, 0.92, -1.3, 0.42, -1.18, 
1.4, -0.83, 0.06, -0.76, -0.19, -0.37, -0.63, 0.64, 0.93, 0.33, 
-0.76, -0.21, -0.59, -0.41, -0.74, 0.39, -1.1, 1.35), X2 = c(-0.22, 
-0.42, 0.72, -0.59, -1.27, 0.64, -1.35, -1.4, -0.35, -1.43, 1.07, 
-0.01, -0.51, 0.11, 1.14, -0.89, 0.77, 1.45, -1.67, -0.83, 0.71, 
0.92, 1.63, 1.68, 0.23, -0.18, 0.07, 0.8, -0.02, 0.82, -0.72, 
-0.41, -0.26, 0.02, -1.68, 1.67, 0.18, 0.98, 1.45, 0.31, -1.23, 
-1.38, -0.63, 1.41, -0.12, 0, -1.3, -1.64, 0.21, 1.52)), .Names = c("Country", 
"X1", "X2"), row.names = c(NA, -50L), class = "data.frame")

【问题讨论】:

    标签: r cluster-analysis choropleth


    【解决方案1】:

    使用你的数据和情节:

    library(plotly)
    
    
    hc <- hclust(dist(df), method = "complete")
    df$member <- cutree(hc, 5)
    
    
    #Grabbing the Africa Geo from a plotly example
    g <- list(
      scope = 'africa',
      showframe = F,
      showland = T,
      landcolor = toRGB("grey90")
    )
    
    plot_ly(df, z = member, type = 'choropleth', mode = 'markers', locations = Country,
        locationmode = 'country names') %>% layout(geo = g)
    

    您可以使用此处找到的情节设置:https://plot.ly/r/reference/

    切换到非连续比例,但碰巧连续比例仅适用于绘制 5。对于更多,您需要一个发散色标。

    【讨论】:

    • 哇,这很有用,谢谢!您知道如何将等值线存储到我的本地机器(例如.png.jpg)吗?另外,您知道如何使国家名称永久显示吗?
    • 如果您将 plotly 的输出存储到某个变量中,您可以使用 DT 包中的 saveWidget 函数作为 html 文件。但你也可以只从 Rstudio 导出它
    • 我发现plotly_IMAGE(p, width = 500, height = 500, format = "png", scale = 2, out_file = "Choropleth.png") 在我的情况下工作得很好,因为saveWidget 不允许.png.jpg,但只允许.html-files。在这种情况下,不要忘记通过Sys.setenv("plotly_username"="your_plotly_username") Sys.setenv("plotly_api_key"="your_api_key") 设置身份验证凭据。API 密钥 可以在个人资料设置HERE 中找到。
    猜你喜欢
    • 1970-01-01
    • 2015-08-12
    • 2012-08-03
    • 2015-12-14
    • 2020-06-28
    • 1970-01-01
    • 2014-12-14
    • 2016-01-31
    • 2018-12-11
    相关资源
    最近更新 更多