【问题标题】:Python scatter plot colors based on values [duplicate]基于值的Python散点图颜色[重复]
【发布时间】:2019-01-02 20:21:37
【问题描述】:

我正在尝试创建一张地图,根据卫星数据绘制风速强度。数据由经度、纬度和风速强度组成。经度/纬度绘制位置(完成),而速度根据风数据的值为每个点提供颜色。

到目前为止,所有点都是蓝色的(看脚本)。

数据框如下所示:

    lon    lat   wind_speed
1   13.0   75.3  23.5
2   12.9   25.2  23.7
3   12.7   75.2  24.2
4   12.6   75.1  24.6
           ...

结果应如下所示: https://gyazo.com/118d4785b49c861096f93799f60a0622

这是我当前的代码:

import os
import numpy as np
from netCDF4 import Dataset
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

... #ncdump, this is from a file in my computer


#variables for map in array form
wind_speed_array =nc_fid.variables['wind_speed_alt']
lats=nc_fid.variables['lat'][:]
lons =nc_fid.variables['lon'][:]


fig = plt.figure()
fig.autofmt_xdate()
m = Basemap(projection='mill',resolution='l')
m.drawcoastlines()
m.drawcountries()
plt.title("time series plot: wind speed")

x,y=m(lons,lats)
cs=m.scatter(x,y,wind_speed_array,color='blue')

plt.show()

目前,我有一张包含所有点的地图,但它们都是蓝色的。如何根据示例图片中的值对点进行着色?

【问题讨论】:

  • 您是否尝试过使用seabornscatterplot 并将值传递给hue 参数?我认为那样会更容易。
  • 命令是m.scatter(x, y, c=wind_speed_array)
  • 我将命令替换为 cs=m.scatter(x,y,c=wind_speed_array)。但是,我收到一个错误,'c' 参数有 11130 个元素,这对于大小为 5565 的 'x' 和大小为 '5565' 的 'y' 使用是不可接受的。

标签: matplotlib


【解决方案1】:

您需要将颜色图作为输入参数color,我认为LinearColorMap 应该可以很好地工作。

colorbar 将帮助您获得 图例栏,就像示例底​​部的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 2017-01-14
    • 2018-10-02
    • 1970-01-01
    • 2019-11-27
    • 2021-12-01
    相关资源
    最近更新 更多