我有一个代码可以生成美国 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/