python - 使用 Bokeh 绘制具有不同半径(不同大小)和基于值的不同颜色的纬度/经度点

标签 python plot heatmap bokeh

我有一个代码可以生成美国 map ,其中的点位于指定的经纬度坐标处。每个点都标记有一个值,我想用该值来指示该点应该有多大以及该点应该是什么颜色。代码如下:

points = pd.read_csv(f)
lat = []
lon = []
heat = []
const = []

for i in range(points.shape[0]):
    lat.append(points.iat[i,0])
    lon.append(points.iat[i,1])
    heat.append(points.iat[i,2])
    const.append(points.iat[i,3])

source = ColumnDataSource(
    data = dict(
        lat = lat,
        lon = lon,
        radius = heat,
        constr = const,
        )
    )
TOOLS = 'box_zoom,wheel_zoom,hover'
state_xs = [states[code]["lons"] for code in states]
state_ys = [states[code]["lats"] for code in states]
p = figure(title="Bound Portfolio", toolbar_location="left",
       plot_width=1100, plot_height=700, tools = TOOLS)
p.patches(state_xs, state_ys, fill_alpha=0.3, fill_color = "orange",
      line_color="#884444", line_width=2, line_alpha=0.3)
circle = Circle(x="lon", y="lat", size=4.5, fill_color="blue", fill_alpha=0.5, line_color=None)
#circle = Circle(x="lon", y="lat", size=4.5, fill_color="blue", fill_alpha=0.5, line_color=None)
p.add_glyph(source, circle)

lat、lon、heat 和 const 是我通过读取 pandas 数据帧的行创建的列表。我希望热值 (1-10) 是相关点的半径。我希望 const 中的每个唯一值映射到相关点的唯一颜色。我一直无法弄清楚如何使这段代码工作。我尝试过对圆圈的大小进行多种变化,但没有成功……颜色也是如此。

最佳答案

这是一个具有独特 Alpha、颜色和大小的示例。 关键是将值存储在列数据源中,然后将其作为参数传递到图形方法中 - 即 .circle("xname", "yname", source=source)

from bokeh.io import show
from bokeh.plotting import figure, ColumnDataSource

lat = [0,1,2,3]
lon = [10,20,30,40]
radius = [1,2,3,4]
constr = [100,200,300,400]
colors= ['#014636', '#016c59','#02818a', '#3690c0']
alpha=[0.8,0.1,0.3,0.5]

source = ColumnDataSource(
    data = dict(
        lat = lat,
        lon = lon,
        radius = radius,
        constr = constr,
        colors=colors,
        alpha=alpha
        )
    )

p = figure(title="Bound Portfolio",
       plot_width=1100, plot_height=700)
p.circle("lon","lat",source=source, fill_alpha="alpha", fill_color = "colors",
      line_color="colors", line_width=2, line_alpha=0.3,radius="radius")

关于python - 使用 Bokeh 绘制具有不同半径(不同大小)和基于值的不同颜色的纬度/经度点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42870870/

相关文章:

python - Django 跨 View 获取上下文数据

r - 使用列名称更改 ggplot2 (R) 的颜色

plot - 本地范围内的交易 View 松树脚本错误 "cannot use ' 绘图“

matlab - "close all"相当于热图图

python - 嵌套括号空循环解释

python - 向 Django 发送 Ajax 请求

python - 为什么我的 Python async/await 不会实际写入 matplotlib 文件?

python - Matplotlib:在 3d 图中显示

python - Seaborn 热图,绘图周围没有空白

matlab - 如何在 Matlab 中将颜色与热图中的值明确关联?