Vấn đềPython-Tôi nên sử dụng lược đồ colormap nào cho dữ liệu đẳng cấp-ish?
Tôi có cốt truyện tôi đang cố gắng tạo ra các xu hướng về tỷ lệ mưa trên toàn thế giới bằng cách sử dụng dữ liệu bị chặn. Tôi có thể làm cho cốt truyện chính nó tốt, nhưng phạm vi màu sắc cho tôi vấn đề. Tôi không thể tìm ra cách làm cho bản đồ màu phù hợp hơn với dữ liệu của tôi, có vẻ như theo cấp số nhân. Tôi đã thử một phạm vi lôgarít, nhưng nó không hoàn toàn phù hợp với dữ liệu.
Mã & dữ liệu phạm vi
Đây là những gì 8192 giá trị dữ liệu của tôi trông giống như khi vẽ theo thứ tự trên một cốt truyện dòng x-y đơn giản. Điểm dữ liệu nằm trên trục x & giá trị nằm trên trục y.
Dưới đây là những gì dữ liệu của tôi trông giống như được vẽ bằng phạm vi màu LogNormal. Có quá nhiều màu xanh bạc hà & màu cam đỏ cho tôi.
#Set labels
lonlabels = ['0','45E','90E','135E','180','135W','90W','45W','0']
latlabels = ['90S','60S','30S','Eq.','30N','60N','90N']
#Set cmap properties
norm = colors.LogNorm() #creates logarithmic scale
#Create basemap
fig,ax = plt.subplots(figsize=(15.,10.))
m = Basemap(projection='cyl',llcrnrlat=-90,urcrnrlat=90,llcrnrlon=0,urcrnrlon=360.,lon_0=180.,resolution='c')
m.drawcoastlines(linewidth=1)
m.drawcountries(linewidth=1)
m.drawparallels(np.arange(-90,90,30.),linewidth=0.3)
m.drawmeridians(np.arange(-180.,180.,45.),linewidth=0.3)
meshlon,meshlat = np.meshgrid(lon,lat)
x,y = m(meshlon,meshlat)
#Plot variables
trend = m.pcolormesh(x,y,lintrends[:,:,0],cmap='jet', norm=norm, shading='gouraud')
#Set plot properties
#Colorbar
cbar=m.colorbar(trend, size='8%',location='bottom',pad=0.8) #Set colorbar
cbar.set_label(label='Linear Trend (mm/day/decade)',size=25) #Set label
for t in cbar.ax.get_xticklabels():
t.set_fontsize(25) #Set tick label sizes
#Titles & labels
fig.suptitle('Linear Trends of Precipitation (CanESM2)',fontsize=40,x=0.51,y=0.965)
ax.set_title('a) 1979-2014 Minimum Trend',fontsize=35)
ax.set_xticks(np.arange(0,405,45))
ax.set_xticklabels(lonlabels,fontsize=20)
ax.set_ylabel('Latitude',fontsize=25)
ax.set_yticks(np.arange(-90,120,30))
ax.set_yticklabels(latlabels,fontsize=20)
Và đây là những gì nó trông giống như một mặc định, phạm vi màu sắc không thay đổi gì. (Cùng một mã trừ đi tiêu = tham số định mức.)
Câu hỏi
Có một chương trình toán học tôi có thể sử dụng để tạo ra một bản đồ màu đó tốt hơn cho thấy một loạt các dữ liệu của tôi? Hay tôi cần phải tạo một phạm vi tùy chỉnh?
Vì vậy, nếu đó là màu bạn không thích, bạn có thể chọn một bản đồ màu khác. Dưới đây là danh sách các colormaps có thể có. http://matplotlib.org/examples/color/colormaps_reference.html. Bạn cũng có thể kiểm tra xem 'PowerNorm'instead của' LogNorm' có tốt hơn cho những gì bạn muốn hiển thị hay không. – cel
Nó không phải là quá nhiều màu sắc vì nó là phạm vi. Nếu tôi có thể nhận được nhiều blues, cyans và vàng hơn để hiển thị trên bản đồ, tôi sẽ rất vui. Dù sao thì, tôi đã chơi với PowerNorm trước đó và có vẻ như không hoạt động, nhưng tôi đã thử lại lần nữa và sau khi tôi đặt vmax = 3, bây giờ nó trông thậm chí còn nặng hơn, mặc dù hơi nặng về màu xanh đậm cho tất cả giá trị bằng không. (Tôi không thể làm gì nhiều về điều đó.) Đăng câu trả lời này và tôi sẽ chấp nhận nó. – ChristineB
Trên ghi chú liên quan: [vui lòng không sử dụng bản đồ phản lực] (http://stats.stackexchange.com/questions/223315/why-use-colormap-viridis-over-jet). Vì phần màu vàng của bản đồ màu sáng hơn các phần màu đỏ hoặc màu xanh, nó thu hút sự chú ý đến các giá trị trung bình của mảng của bạn, điều này ít quan tâm nhất từ quan điểm trực quan hóa dữ liệu. Có [nhiều colormaps thích hợp hơn] (http://matplotlib.org/users/colormaps.html) sẽ giúp các ô của bạn trông đẹp hơn :). – Andreq