我有Latitude(Lat)和Lonitude的数组,它们都是形状为5的一维数组。 然后我有另一个值为C的数组,这也是一个1D数组,形状为5.我想在最后用pcolormesh绘制孔的东西,所以有一种热图图!
以下是相应的代码:
self.showWindow(self)
然后我收到以下错误
#include "date.h"
#include <iostream>
int
main()
{
using namespace date;
for (sys_days start = mar/sun[1]/2016; start <= sys_days{mar/last/2018};
start += weeks{1})
std::cout << start << '\n';
}
2016-03-06
2016-03-13
2016-03-20
...
2018-03-18
2018-03-25
所以想给每个X-Y对一个C值,所以有5个XY对和5个C值。理论上应该没问题,但我真的找不到解决方案!
答案 0 :(得分:0)
pcolormesh
用于绘制网格。网格是值的网格(对于lat
,lon
和C
的所有三个),pcolormesh
将绘制连接网格中相邻值的线和四边形。
你没有网格(2d),你最多只能使用折线(1d)。对于独特的热图,这并没有足够的信息。
答案 1 :(得分:0)
您有两个问题,一个是逻辑问题,另一个问题是pcolormesh
:
首先,C
和Lat
包含5个值,但Lon
包含6个值。这意味着你没有5个XY值和5个C值,所以这是你应该解决的问题。
但如果正确扩展坐标,可以创建一个带有几个不同坐标的pcolormesh:
import numpy as np
import matplotlib.pyplot as plt
plt.figure()
# Data
Lat = np.array([-65.62282562, -65.62266541, -65.62241364, -65.62398529, -65.62410736])
Lon = np.array([145.28251648, 145.38883972, 145.49528503, 121.4509201, 121.55738068])
C = np.array([0., 0.5, 2, 3, 0])
# Plot
plt.pcolormesh(np.expand_dims(Lat, 0), np.expand_dims(Lon, 1), C*np.eye(5))
expand_dims
会使尺寸正确地相互广播,而np.eye
会确保正确的值具有您在C
中指定的值,所有其他坐标将为零
但输出可能看起来不太好,因为这是一个非常稀疏的坐标系。
除pcolormesh
之外还有其他替代方案,尤其是加权直方图可能会引起兴趣或轮廓:
Lat = np.random.normal(-65, 2, 50000)
Lon = np.random.normal(130, 5, 50000)
C = np.random.randint(0, 10, 50000)
plt.figure()
plt.hexbin(Lat, Lon, C=C, cmap=plt.cm.hot)
答案 2 :(得分:0)
Pcolormesh旨在与2D变量一起使用。如果对具有大量数据的变量使用np.eye(如实际情况),则可能会遇到内存问题。 可以通过以下方式使用散射来获得像pcolormesh这样的结果,其中1D数组具有与两个数组相同的形状,并且其值存在于两个数组的每对值中。
var usedCarPurchaseInqPromise = D_buyerProcess.buyerProcessApis.processUsedCarPurchaseInquiries(boxObj, leadData);
usedCarPurchaseInqPromise.always(function () {
if (isFromCaptcha == "1")
isFromCaptcha = "0";
if (isGSDClick == "1")
isGSDClick = "0";
hideBuyerForm(boxObj);
$('#newLoading').hide();
boxObj.find('#pg-process_img,#pg-loadingImg').hide();
boxObj.find("#loadDetails").hide();
}).fail(function () {
D_buyerProcess.sellerDetails.processLeadFailureResponse(boxObj, jqXHR);
});
var hitRecoApi = $.ajax({
type: 'GET',
url: stockRecommendationsUrl_g,
headers: { "sourceid": "1" },
dataType: 'json'
});
$.when(usedCarPurchaseInqPromise, hitRecoApi).done(function (response, jsonData) {
Common.utils.lockPopup();
if (D_buyerProcess.utils.isNumberChanged(buyersMobile)) {//if user has changed number as compared to previously stored number in cookie, remove the finance offer of previous number
if (typeof (customerFinanceUI) !== 'undefined' && typeof (customerFinance) !== 'undefined') {
customerFinanceUI.hideFinanceOffer();
customerFinance.removeFinanceOffer(); // removes finance cookie and storage
}
}
}