【问题标题】:Plotting a map : arrows disappear绘制地图:箭头消失
【发布时间】:2013-06-27 13:54:08
【问题描述】:

下午好, 由于 csv 文件,我正在尝试在地图上绘制表面电流数据。这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
from pylab import *


# read CSV as a numpy array
data = mlab.csv2rec('datasets/mix.csv')

# print CSV file headers
print data.dtype.names

# load columns as vectors
data_x = data['longitude']
data_y = data['latitude']
data_u = data['x']
data_v = data['y']

U = cos(data_u)
V = sin(data_v)


# plot raw data
Q = quiver(data_x, data_y, U, V, color='black', units='width')
qk = quiverkey(Q, 0.5, 0.92, 2, '.', labelpos='W',  
               fontproperties={'weight': 'bold'})
title('Current Surface')

plt.show()

使用该 csv 文件的一小部分(300 行),我的结果包含箭头:

但是当我想对我所有的 csv 文件进行建模时,不再有箭头,而是点(导致下面的地图): 上图放大显示没有箭头:

您对这种行为有任何想法吗? 问候。

【问题讨论】:

  • 带有点的绘图显示了一个小得多的区域,并且 y 轴为负值;您是否尝试过手动将轴限制设置为第一个图中的限制?第二个地块至少应该包含第一个地块。
  • 地球图是随机拍摄的,以显示点。 @Evert 我看不到箭头,只有点。在我看来,Points 有点拉长和歪曲,但不确定我是否对此持乐观态度
  • 显示所有绘图命令...可能是您先绘制箭头,然后绘制地图,至少 imshow 往往会提供一个不透明的图层来隐藏以前可能存在的任何内容。跨度>
  • @deinonychusaur 箭头后面没有地图,因为我正在绘制海流表面,所有数据都绘制了大陆。显示了我的所有代码。
  • @So4ne:我误解了。我在您的问题中进行了一些编辑,这应该可以防止误解(您没有说图 3 是图 2 的放大图)。

标签: python numpy matplotlib


【解决方案1】:

在最后一张图片中,您有箭头,但它们太短以至于您看不到“尾巴”。问题是在你的第二个图中,你的数据点太密集了: quiver 命令会自动缩放 arrwos,使它们不重叠。如果您随后放大(我猜您放大了窗口,而不是通过在脚本中选择较小的区域?),则不会重新计算此缩放。

我建议每 10 个左右的数据点绘制一次(例如 U[::10]),这应该会有所帮助。或者,使用“scale”关键字参数:

http://matplotlib.org/api/pyplot_api.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多