我读取数据集的不是csv文件,而是COVID-19 Data.xlsx和National_Obesity_By_State.geojson两个文件,请问能重新修改一下代码吗
时间: 2024-04-04 10:30:36 浏览: 121
Covid Data.csv
当读取的文件不是csv格式时,需要使用不同的函数来读取数据。对于Excel文件,我们可以使用pandas库的read_excel函数来读取。对于GeoJSON文件,我们可以使用geopandas库来读取。下面是修改后的代码:
```
import pandas as pd
import geopandas as gpd
import geoplotlib
from geoplotlib.colors import ColorMap
from geoplotlib.layers import BaseLayer
from geoplotlib.utils import BoundingBox
class CovidLayer(BaseLayer):
def __init__(self, data):
self.data = data
self.cmap_cases = ColorMap('inferno', alpha=255, levels=10)
self.cmap_cured = ColorMap('Blues', alpha=255, levels=10)
self.cmap_deaths = ColorMap('Reds', alpha=255, levels=10)
def draw(self, plt):
plt.isolines(
data=self.data,
lat='Latitude',
lon='Longitude',
z='Cases',
cmap=self.cmap_cases,
num_levels=10,
labels={'fmt': '%d'},
linewidth=2
)
plt.isolines(
data=self.data,
lat='Latitude',
lon='Longitude',
z='Cured',
cmap=self.cmap_cured,
num_levels=10,
labels={'fmt': '%d'},
linewidth=2
)
plt.isolines(
data=self.data,
lat='Latitude',
lon='Longitude',
z='Deaths',
cmap=self.cmap_deaths,
num_levels=10,
labels={'fmt': '%d'},
linewidth=2
)
def bbox(self):
return BoundingBox.from_points(
self.data['Longitude'],
self.data['Latitude']
)
# 读取COVID-19 Data.xlsx文件中的数据
df = pd.read_excel('COVID-19 Data.xlsx')
# 读取National_Obesity_By_State.geojson文件中的地理数据
gdf = gpd.read_file('National_Obesity_By_State.geojson')
gdf = gdf.rename(columns={'NAME': 'State'})
# 将两个数据集合并
data = pd.merge(df, gdf, on='State')
layer = CovidLayer(data)
geoplotlib.add_layer(layer)
geoplotlib.show()
```
在这个代码中,我们首先使用pandas库的read_excel函数读取Excel文件中的数据,并使用geopandas库的read_file函数读取GeoJSON文件中的地理数据。然后,我们将两个数据集合并,并创建了一个名为CovidLayer的自定义图层,该图层负责绘制等值线图。在该图层的构造函数中,我们加载了数据集,并创建了三个颜色映射,分别用于表示累计确诊人数、治愈率和死亡率。接下来,我们使用geoplotlib.isolines函数三次分别绘制了三个等值线图,分别表示累计确诊人数、治愈率和死亡率。在每个等值线图中,我们都指定了数据集、经纬度、值以及颜色映射等参数,并设置了线宽和标签格式等选项。最后,我们定义了一个bbox函数,用于确定绘图区域的范围。
希望这个修改后的代码可以帮助您完成您的任务,祝您好运!
阅读全文