python - 如何在 basemap 顶部绘制不同密度的散点图

标签 python matplotlib scatter-plot matplotlib-basemap

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

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

这是我正在使用的代码:

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()

最佳答案

import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

# make up some data for scatter plot
df = pd.read_csv('dust.csv')
x = df[['y']].values
y = df[['x']].values
fig = 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 overkill
m.drawcoastlines(linewidth=1)# add coastlines
m.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()

关于python - 如何在 basemap 顶部绘制不同密度的散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58016749/

相关文章:

python - Sage 从 csv 导入并绘制大于 10 的数字

python - 如何在不同比例下操作多个 x 轴使其相互对应?

python - OpenCV从缓冲区获取缩略图

python - 使用 matplotlib 创建一个饼图

python - 在pylab中以不同颜色显示多个掩码

python - xgboost.plot_tree 显示 - 空字符/框/ block 作为标签

python - 当 '?' 不起作用时,如何在 sqlite3 语句中为列名和表名使用占位符?

Python DNS服务器IP地址查询

python - 在 matplotlib 中为 imshow 定义离散颜色图

python - 在 matplotlib 散点图中自定义 x 和 y 标签