我试图在一个色条中添加标记和标签,但在输出中似乎没有显示出来。我尝试了两种方法(如下所示的代码)。第二个方法是按照Stack Overflow上的另一个问题所示进行的: How to add Matplotlib Colorbar Ticks。
我一定是忽视了非常简单的东西,因为我是Matplotlib和Python的初学者。
我成功地获得了彩色条,但我想要的刻度就是不显示。任何帮助都将非常感激,因为我已经在尝试和搜索之后卡了几个小时。这是我使用hexbin在basemap上生成热图的代码。
我使用第一种或第二种方法得到的colorbar ticks输出是相同的。如下图所示:热力图和没有刻度和标签的colorbar。
我希望最小、中位数和最大人口值(分别为48、107和1302)在colorbar上显示,并标记为Min、Mean和Max。谢谢您的时间。
我一定是忽视了非常简单的东西,因为我是Matplotlib和Python的初学者。
我成功地获得了彩色条,但我想要的刻度就是不显示。任何帮助都将非常感激,因为我已经在尝试和搜索之后卡了几个小时。这是我使用hexbin在basemap上生成热图的代码。
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.colors import LinearSegmentedColormap
from matplotlib import cm
#Loading data from CSV file
DATA_FILE = '....../Population_data.csv'
roc_data = pd.read_csv(DATA_FILE)
roc_data.head()
#Creating figure window
fig = plt.figure(figsize=(14,10))
ax = fig.add_subplot(111)
#Drawing the basemap
m = Basemap(projection='merc', lat_0=43.12, lon_0=-77.626,
resolution = 'i',llcrnrlon=-78.236,
llcrnrlat=42.935,
urcrnrlon=-77.072,
urcrnrlat=43.349)
m.drawcoastlines()
m.drawcounties(zorder=20, color='red')
m.drawcountries()
m.drawmapboundary()
#plotting the heatmap using hexbin
x, y = m(roc_data['Longitude'].values, roc_data['Latitude'].values)
values = roc_data['Total(20-64)']
m.hexbin(x, y, gridsize = 125, bins = 'log', C = values, cmap = cm.Reds)
#Defining minimum, mean and maximum population values
max_p = roc_data['Total(20-64)'].max()
min_p = roc_data['Total(20-64)'].min()
mean_p = roc_data['Total(20-64)'].mean()
#Adding Colorbar
cb = m.colorbar(location = 'bottom', format = '%d', label = 'Population by Census Blocks')
#setting ticks
#cb.set_ticks([48, 107, 1302]) #First approach, didn't work
#cb.set_ticklabels(['Min', 'Mean', 'Max'])
cb.set_ticks([min_p, mean_p, max_p]) #Second appraoch, assumed ticks and tick labels should be same
cb.set_ticklabels([min_p, mean_p, max_p]) #from the above mentioned stackoverflow question, but did't work
plt.show()
我使用第一种或第二种方法得到的colorbar ticks输出是相同的。如下图所示:热力图和没有刻度和标签的colorbar。
我希望最小、中位数和最大人口值(分别为48、107和1302)在colorbar上显示,并标记为Min、Mean和Max。谢谢您的时间。