我想根據散景的map of US unemployment製作一張chloropleth地圖,我對這個圖書館並不是很熟悉,但我對熊貓有些熟悉。我有一個國家數據框和我們系統的優先級。我無法獲得正確顯示的優先級。我認爲我錯誤地使用了fill_color屬性,但除了散景文檔中列出的one line之外,我找不到關於它的更多信息。散熱圖不顯示正確的結果
我的預期輸出是針對高優先級顯示爲紅色,中等優先級顯示爲綠色,低優先級顯示爲黃色。 (顏色方案不是我的選擇。)如果狀態沒有優先級,它們應該顯示爲白色。然而,輸出並不符合 - 顏色似乎是隨機放置的。一些低優先級的國家是紅色的,一些是黃色的;一些中等優先的國家是白色的,有些是紅色的;等等
我想錯誤在於我的state_colors
列表。現在我正在循環並更新每個狀態的優先級,但由於某種原因它沒有正確更新。有沒有辦法在patch()方法內更改fill_color
屬性,以便顏色對應於優先級值?或者我只是搞亂state_colors
名單?
from bokeh.models import ColumnDataSource
from bokeh.sampledata import us_states
from bokeh.plotting import figure, show, output_file
import pandas as pd
df2 = pd.read_excel(filename, sheetname='2012 Master', header=1, skip_footer=4, parse_cols='A,B,L,P')
usa_states = us_states.data.copy()
state_xs = [usa_states[code]["lons"] for code in usa_states]
state_ys = [usa_states[code]["lats"] for code in usa_states]
df2.fillna(value="", inplace=True)
state_colors = []
for state in df2["State"]:
for priority in df2["Priority"]:
if priority == "High":
state_colors.append("#FF0000")
elif priority == "Medium":
state_colors.append("#008000")
elif priority == "Low":
state_colors.append("#FFFF00")
else:
state_colors.append("#FFFFFF")
source = ColumnDataSource(
data=dict(
st = df2['State'],
priority = df2['Priority']
)
)
p = figure(title="Title", tools= TOOLS, toolbar_location="above", plot_width=1100, plot_height=700, x_range=[-128,-64], y_range=[23,50])
p.patches(state_xs, state_ys, fill_color = state_colors, source=source, fill_alpha=1, line_color="black", line_width=1)
hover = p.select(dict(type=HoverTool))
hover.tooltips= [
("State","@st"),
("Priority","@priority"),
]
show(p)
我的數據幀(DF2):
State Priority
Alabama Low
Arizona
Arkansas
California Medium
Colorado
Connecticut
Delaware
District of Columbia
Florida High
Georgia Medium
Idaho High
Illinois Low
...
Wisconsin High
Wyoming Low
我使用熊貓0.17.1。 Here是散景使用的usa_states代碼。 Here是我當前的輸出。