下午好, 我正试图通过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文件时,不再有箭头,而是点(导致下面的地图): 上图放大显示没有箭头:
你对这种行为有什么看法吗? 问候。
答案 0 :(得分:1)
在最后一张图片中你有箭头,但它们很短,你看不到“尾巴”。问题是在第二个图中,您的数据点太密集:箭头命令会自动缩放箭头,使它们不重叠。如果你然后放大(我猜你在窗口中缩放,而不是通过在脚本中选择一个较小的区域?),则不会重新计算此缩放。
我建议只绘制每10个左右的数据点(例如U [:: 10]),这应该有帮助。或者,使用“scale”关键字参数: