猿问

如何在 matplotlib 底图的 TOP 上绘制不同密度的散点图

我正在尝试绘制印度不同年份和不同地点的污染水平。


我能够独立获得散点图和底图。但是,我在地图上的指定地理位置绘制这个散点图时遇到了困难。结果是地图被放置在散点图的顶部,这不是我想要的。


这是我正在使用的代码:


import matplotlib.pyplot as plt

from mpl_toolkits.basemap import Basemap

import pandas as pd

m = Basemap(projection='mill',

            llcrnrlat = -80,#llcrncrlat=lower left corner latitude

            llcrnrlon = -180,

            urcrnrlat = 80,

            urcrnrlon = 180,

            resolution = 'l')

df = pd.read_csv('dust.csv')

x = df[['y']]

y = df[['x']]

colors = df[['y1']]

#m.drawcoastlines()

#m.drawcountries(linewidth=2)

#m.scatter(df['x'],df['y'],s=colors, alpha=0.5, cmap='viridis')

plt.scatter(x,y,s=colors, alpha=0.5, cmap='viridis')

plt.colorbar()

plt.show()


慕桂英4014372
浏览 162回答 2
2回答

慕沐林林

问题:如何在底图的顶部绘制不同密度的散点图?数据:我有印度各个城市的经纬度以及各个年份的污染水平。方法:最初,我已将分配的数据结构分配给变量“df”。将纬度分配给“y”,将经度分配给“x”。由于纬度和经度也有一个变量'y'和'x',在其中,我使用'df['x'].values'来单独获取数值。考虑到印度的几何位置,我绘制了地图。下一组是将这些纬度和经度纳入与地图相同的变量中。这是至关重要的,没有它,我无法观察散点图。以颜色作为第三个变量,我绘制了散点图,污染水平具有不同的密度。代码:import pandas as pdimport matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemap# make up some data for scatter plotdf = pd.read_csv('dust.csv')x = df[['y']].valuesy = df[['x']].valuesfig = plt.gcf()fig.set_size_inches(8, 6.5)m = Basemap(projection='mill',            llcrnrlat = 6.5,#llcrncrlat=lower left corner latitude            llcrnrlon = 66,            urcrnrlat = 36,            urcrnrlon = 98,            resolution = 'l')#m.bluemarble(scale=0.2)   # full scale will be overkillm.drawcoastlines(linewidth=1)# add coastlinesm.drawcountries(linewidth=1)# transform coordinates#plt.subplot(221)x,y=m(x,y)plt.scatter(x, y,s=df.iloc[1:,2], alpha = 0.5, cmap='viridis')plt.colorbar()plt.show()

叮当猫咪

import pandas as pdimport matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemap# make up some data for scatter plotdf = pd.read_csv('dust.csv')x = df[['y']].valuesy = df[['x']].valuesfig = plt.gcf()fig.set_size_inches(8, 6.5)m = Basemap(projection='mill',            llcrnrlat = 6.5,#llcrncrlat=lower left corner latitude            llcrnrlon = 66,            urcrnrlat = 36,            urcrnrlon = 98,            resolution = 'l')#m.bluemarble(scale=0.2)   # full scale will be overkillm.drawcoastlines(linewidth=1)# add coastlinesm.drawcountries(linewidth=1)# transform coordinates#plt.subplot(221)x,y=m(x,y)plt.scatter(x, y,s=df.iloc[1:,2], alpha = 0.5, cmap='viridis')plt.colorbar()plt.show()
随时随地看视频慕课网APP

相关分类

Python
我要回答