如何绘制连续的颜色条而不是离散的颜色条?

时间:2019-07-11 16:47:51

标签: matplotlib colorbar

我正在绘制一些2D数据轮廓,但希望有一个连续的色条而不是离散的色条。我怎么得到这个?查看我的代码和输出。

我尝试在不提供颜色级别,不同颜色图的情况下进行绘图,但无济于事。

    ylim = [0, 8]
    xlim = [starttime, endtime]
    fig = plt.figure(figsize=(10,7))
    ax = plt.subplot()

    levels1 = np.arange(5,61,5)
    cmap=plt.get_cmap('jet')
    Zplot=ax.contourf(timesNew, hgtNew, ZNew, levels1, cmap=cmap,
                    vmin=min(levels1), vmax=max(levels1), extend='both')
    cbZ=plt.colorbar(Zplot, ticks=levels1)

    niceDates = []
    for timestamp in np.arange(ax.get_xlim()[0],ax.get_xlim()[1]+sec,sec):
       niceDates.append(str(datetime.datetime.utcfromtimestamp(timestamp).strftime("%H")))
    ax.set_ylim(ylim)
    ax.set_xlim(xlim)
    ax.set_xticks(np.arange(ax.get_xlim()[0],ax.get_xlim()[1]+sec,sec))
    ax.set_xticklabels([])
    ax.set_xticklabels(niceDates) #plot nice dates
    ax.set_ylabel('Height (km)', fontsize=labelsize)
    ax.set_xlabel('Time (UTC)', fontsize=labelsize)

代码可以很好地工作并绘制,但是颜色条是离散的,我希望它是连续的。我究竟做错了什么?数据位于2D numpy数组中。我已经对数据进行了一些广泛的处理,因此除了绘制外,没有显示完整的代码。 Example output from above code

1 个答案:

答案 0 :(得分:1)

据我所知,没有办法获得真正的连续颜色条。尝试添加更多级别。这样,它将看起来更像一个连续的颜色栏。

ylim = [0, 8]
xlim = [starttime, endtime]
fig = plt.figure(figsize=(10,7))
ax = plt.subplot()

levels1 = np.linspace(5,61,500)
level_ticks = np.arange(5, 61, 5)
cmap=plt.get_cmap('jet')
Zplot=ax.contourf(timesNew, hgtNew, ZNew, levels1, cmap=cmap,
                vmin=min(levels1), vmax=max(levels1), extend='both')

cbZ=plt.colorbar(Zplot, ticks=level_ticks)

niceDates = []
for timestamp in np.arange(ax.get_xlim()[0],ax.get_xlim()[1]+sec,sec):
   niceDates.append(str(datetime.datetime.utcfromtimestamp(timestamp).strftime("%H")))
ax.set_ylim(ylim)
ax.set_xlim(xlim)
ax.set_xticks(np.arange(ax.get_xlim()[0],ax.get_xlim()[1]+sec,sec))
ax.set_xticklabels([])
ax.set_xticklabels(niceDates) #plot nice dates
ax.set_ylabel('Height (km)', fontsize=labelsize)
ax.set_xlabel('Time (UTC)', fontsize=labelsize)