【问题标题】:Visualize scatter plot with labels on each point用每个点上的标签可视化散点图
【发布时间】:2021-09-10 23:15:36
【问题描述】:

我有一个数据集经度、纬度、城市以及冠状病毒城市的状态。 我想在每个点上为城市名称贴上标签。我不知道我是否一一使用 plt.text() 来给出标签。 这是我用于创建数据集的代码

jabar = [
['Depok',-6.385589,106.830711,'sedang',600],
['Tasikmalaya',-7.319563,108.202972,'sedang',600],
['Ciamis',-7.3299,108.3323,'sedang',600],
['Kuningan',-7.0138,108.5701,'sedang',600],
['Bogor',-6.497641,106.828224,'sedang',600],
['Bogor',-6.595038,106.816635,'sedang',600],
['Cirebon',-6.737246,108.550659,'sedang',600],
['Majalengka',-6.8364,108.2274,'sedang',600],
['Sumedang',-6.8381,107.9275,'sedang',600],
['Indramayu',-6.327583,108.324936,'sedang',600],
['Subang',-6.571589,107.758736,'sedang',600],
['Purwakarta',-6.538681,107.449944,'sedang',600],
['Karawang',-6.3227,107.3376,'sedang',600],
['Bekasi',-6.241586,106.992416,'sedang',600],
['Pangandaran',-7.6833,108.6500,'sedang',600],
['Sukabumi',-6.923700,106.928726,'sedang',600],
['Cimahi',-6.8841,107.5413,'sedang',600],
['Banjar',-7.374585,108.558189,'sedang',600],
['Cianjur',-6.734679,107.041252,'sedang',600],
['Bandung',-6.914864,107.608238,'tinggi',1000],
['Bandung',-6.905977,107.613144,'tinggi',1000],
['Bandung',-6.914744,107.609810,'tinggi',1000],
['Garut',-7.227906,107.908699,'sedang',600],
['Bandung Barat',-7.025253,107.519760,'sedang',600]]
features=['City','longitude','latitude','status','status_size']
risk_map = pd.DataFrame(jabar, columns=features)

这是我为可视化创建的代码,用于为每个点提供标签。

import matplotlib.pyplot as plt
plt.figure(figsize=(14,8))
plt.scatter(risk_map['latitude'],risk_map['longitude'], c='orange',
s=risk_map['status_size'], label='Risk region')
plt.title('Peta Sebaran Covid-19', fontsize=20)
plt.text(-7.227906,107.908699,'Garut')
plt.show()

实际上,我有两个数据集,不包括我上面写的代码,另一个是关于确认阳性病例 covid 区域的数据,大约超过 500.000 个点。 我合并这两个数据集以获得风险区域。但是当我想在每个点上加一个标签时我会遇到麻烦。 我上面写的 plt.text() 是在一个点上给出标签的例子。如果我一一写和文本代码一样是不可能的,因为我的计算机在我执行该代码后被破解并空白。

任何人有任何想法给我写上面代码的每个点打一个标签吗? 提前感谢

【问题讨论】:

    标签: python pandas matplotlib scatter-plot


    【解决方案1】:
    • plotly mapbox 提供非常简单易用的功能来满足您的需求
    • 您的 longitudelatitude 值是相反的。请参阅下面的代码示例,我已将它们反转
    import plotly.express as px
    import pandas as pd
    
    
    jabar = [
    ['Depok',-6.385589,106.830711,'sedang',600],
    ['Tasikmalaya',-7.319563,108.202972,'sedang',600],
    ['Ciamis',-7.3299,108.3323,'sedang',600],
    ['Kuningan',-7.0138,108.5701,'sedang',600],
    ['Bogor',-6.497641,106.828224,'sedang',600],
    ['Bogor',-6.595038,106.816635,'sedang',600],
    ['Cirebon',-6.737246,108.550659,'sedang',600],
    ['Majalengka',-6.8364,108.2274,'sedang',600],
    ['Sumedang',-6.8381,107.9275,'sedang',600],
    ['Indramayu',-6.327583,108.324936,'sedang',600],
    ['Subang',-6.571589,107.758736,'sedang',600],
    ['Purwakarta',-6.538681,107.449944,'sedang',600],
    ['Karawang',-6.3227,107.3376,'sedang',600],
    ['Bekasi',-6.241586,106.992416,'sedang',600],
    ['Pangandaran',-7.6833,108.6500,'sedang',600],
    ['Sukabumi',-6.923700,106.928726,'sedang',600],
    ['Cimahi',-6.8841,107.5413,'sedang',600],
    ['Banjar',-7.374585,108.558189,'sedang',600],
    ['Cianjur',-6.734679,107.041252,'sedang',600],
    ['Bandung',-6.914864,107.608238,'tinggi',1000],
    ['Bandung',-6.905977,107.613144,'tinggi',1000],
    ['Bandung',-6.914744,107.609810,'tinggi',1000],
    ['Garut',-7.227906,107.908699,'sedang',600],
    ['Bandung Barat',-7.025253,107.519760,'sedang',600]]
    features=['City','longitude','latitude','status','status_size']
    risk_map = pd.DataFrame(jabar, columns=features)
    
    fig = px.scatter_mapbox(risk_map, lon="latitude", lat="longitude", 
                            color="status", hover_name="City",size="status_size"
                           )
    fig.update_layout(mapbox={"style":"carto-positron"})
    
    fig
    

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 2019-11-30
      • 1970-01-01
      • 2017-11-10
      • 2011-03-18
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多