2017-03-18 96 views
0

我有一個代碼,可以生成一個美國地圖,其中的點位於指定的緯度長度座標處。這些點中的每一個都標有一個值,我想用它來指示該點應該有多大以及該點應該是什麼顏色。代碼如下:使用散景繪製不同半徑(不同大小)的經緯度點,並根據數值改變顏色

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) 

緯度,經度,熱,和const是,我已經通過讀取數據框大熊貓的行創建的列表。我想讓熱量(1-10)的值成爲問題的半徑。我希望const中的每個唯一值映射到所討論的點的唯一顏色。我一直無法弄清楚如何使這個代碼工作。我已經嘗試了許多變化的圓的大小,它沒有奏效...同樣適用於顏色。

回答

0

下面是一個具有獨特的alpha,顏色和大小的例子。 關鍵是將值存儲在columndatasource中,然後將其作爲參數傳遞給數字方法 - 即.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")