2
我試圖在15種不同顏色的地圖上繪製15種不同風暴的路徑。路徑的顏色應該取決於風暴的名稱。例如,如果風暴的名字是AUDREY,風暴路徑的顏色應該在地圖上是紅色的。有些人可以幫助/指向正確的方向嗎?用Python中的顏色字典繪製不同顏色的線條
這裏是我的代碼的一部分:
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import csv, os, scipy
import pandas
from PIL import *
data = np.loadtxt('louisianastormb.csv',dtype=np.str,delimiter=',',skiprows=1)
'''print data'''
fig = plt.figure(figsize=(12,12))
ax = fig.add_axes([0.1,0.1,0.8,0.8])
m = Basemap(llcrnrlon=-100.,llcrnrlat=0.,urcrnrlon=-20.,urcrnrlat=57.,
projection='lcc',lat_1=20.,lat_2=40.,lon_0=-60.,
resolution ='l',area_thresh=1000.)
m.bluemarble()
m.drawcoastlines(linewidth=0.5)
m.drawcountries(linewidth=0.5)
m.drawstates(linewidth=0.5)
# Creates parallels and meridians
m.drawparallels(np.arange(10.,35.,5.),labels=[1,0,0,1])
m.drawmeridians(np.arange(-120.,-80.,5.),labels=[1,0,0,1])
m.drawmapboundary(fill_color='aqua')
color_dict = {'AUDREY': 'red', 'ETHEL': 'white', 'BETSY': 'yellow','CAMILLE': 'blue', 'CARMEN': 'green',
'BABE': 'purple', 'BOB': '#ff69b4', 'FREDERIC': 'black', 'ELENA': 'cyan', 'JUAN': 'magenta', 'FLORENCE': '#faebd7',
'ANDREW': '#2e8b57', 'GEORGES': '#eeefff', 'ISIDORE': '#da70d6', 'IVAN': '#ff7f50', 'CINDY': '#cd853f',
'DENNIS': '#bc8f8f', 'RITA': '#5f9ea0', 'IDA': '#daa520'}
# Opens data file witn numpy
'''data = np.loadtxt('louisianastormb.csv',dtype=np.str,delimiter=',',skiprows=0)'''
'''print data'''
colnames = ['Year','Name','Type','Latitude','Longitude']
data = pandas.read_csv('louisianastormb.csv', names=colnames)
names = list(data.Name)
lat = list(data.Latitude)
long = list(data.Longitude)
colorName = list(data.Name)
#print lat
#print long
lat.pop(0)
long.pop(0)
latitude= map(float, lat)
longitude = map(float, long)
x, y = m(latitude,longitude)
#Plots points on map
for colorName in color_dict.keys():
plt.plot(x,y,'-',label=colorName,color=color_dict[colorName], linewidth=2)
lg = plt.legend()
lg.get_frame().set_facecolor('grey')
plt.title('20 Hurricanes with Landfall in Louisiana')
#plt.show()
plt.savefig('20hurpaths1.jpg', dpi=100)
這裏的錯誤消息,我不斷收到的是:
Traceback (most recent call last):
File "/home/mikey1/lstorms.py", line 51, in <module>
plt.plot(x,y,'y-',color=colors[names], linewidth=2)
TypeError: unhashable type: 'list'
>>>
噢好的。對不起,我是這個新手。我只是看了一些關於python字典的例子,但它仍然令人困惑。訪問字典的最佳方法是什麼? – mikez1
非常感謝你!對不起,代碼是相同的,但我只是將其從顏色更改爲color_dict,以保持一切獨特。 – mikez1
不用擔心隊友。爲了將來的參考,最好是如果鍵是「類型」或「類型」。有一個簡單的例子,如何以編程方式訪問我的答案中的詞典條目。它現在工作嗎?如果不是用新問題更新問題,如果你接受了答案,那麼確實很好。 –