【问题标题】:Using Bokeh to plot lat/long points with varying radii (varying size) and varying color based on values使用 Bokeh 绘制具有不同半径(不同大小)和基于值的不同颜色的纬度/经度点
【发布时间】:2017-03-18 05:31:38
【问题描述】:

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

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 中的每个唯一值都映射到相关点的唯一颜色。我一直无法弄清楚如何使这段代码工作。我已经尝试为圆圈的大小添加许多变化,但它没有奏效......同样适用于颜色。

【问题讨论】:

    标签: python plot heatmap bokeh


    【解决方案1】:

    这是一个具有唯一 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")
    

    【讨论】:

      猜你喜欢
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多