未显示Quiverkey参考箭头

时间:2015-10-19 20:10:10

标签: python python-2.7 matplotlib gis matplotlib-basemap

我的quiverkey中缺少参考箭头,我无法弄清楚原因。

有人能看出我做错了吗?我最初没有使用gridspec,但我需要这样才能使我的数字正确缩放。当我没有使用gridspec时,参考箭头显示,但现在它不再是。为什么gridspec会导致我丢失quiverkey的参考箭头?

Matplotlib版本:1.4.3

Python版本:2.7.10

注意:棒图功能取自here.

import matplotlib.pyplot as plot
import matplotlib as mpl
from mpl_toolkits.basemap import Basemap
import numpy as np
from datetime import datetime, timedelta
import matplotlib.gridspec as gridspec
from matplotlib.dates import date2num

def stick_plot(time, u, v, **kw):
    width = kw.pop('width', 0.002)
    headwidth = kw.pop('headwidth', 0)
    headlength = kw.pop('headlength', 0)
    headaxislength = kw.pop('headaxislength', 0)
    angles = kw.pop('angles', 'uv')
    ax = kw.pop('ax', None)


    if angles != 'uv':
        raise AssertionError("Stickplot angles must be 'uv' so that"
                         "if *U*==*V* the angle of the arrow on"
                         "the plot is 45 degrees CCW from the *x*-axis.")

    if not ax:
        fig, ax = plot.subplots()

    q = ax.quiver(date2num(time), [[0]*len(time)], u, v,
              angles='uv', width=width, headwidth=headwidth,
              headlength=headlength, headaxislength=headaxislength,
              **kw)

    ax.axes.get_yaxis().set_visible(False)
    ax.xaxis_date()
    return q



x = np.arange(100, 110, 0.1)
start = datetime.now()
time = [start + timedelta(days=n) for n in range(len(x))]
u, v = np.sin(x), np.cos(x)

gs = gridspec.GridSpec(1,3, width_ratios = [5,1,3], height_ratios = [2,1])  
fig = plot.figure(figsize=(11,8))
ax1 = plot.subplot(gs[:, :-1])
ax2 = plot.subplot(gs[:, -1])

map1 = Basemap(ax = ax1)
map1.drawcoastlines()

q = stick_plot(time, u, v, ax = ax2)

ref = 1
qk = plot.quiverkey(q, 0.3, 0.85, ref,
              "%s N m$^{-2}$" % ref,
              labelpos='N', coordinates='axes')

_ = plot.xticks(rotation=30)

plot.show()

图片:

missing quiver key reference arrow

2 个答案:

答案 0 :(得分:1)

我有类似的问题。在调用linewidth时明确设置quiver()关键字为我解决了问题。

答案 1 :(得分:0)

我猜想出绘图坐标系和quiverkey坐标系之间的冲突导致了此问题。尝试输出到图形文件,例如:

plt.savefig("xxx.jpg")