簡體   English   中英

使用適用於Python的matplotlib,如何在用pcolor創建的單元格的中心繪制點?

[英]With matplotlib for Python, how to plot a dot in the center of cells that were created with pcolor?

我正在使用matplotlib.pyplot.pcolor繪制2D網格,如下所示:

PL.pcolor(array, cmap = PL.cm.YlOrRd, vmin = 0, vmax = 3)

其中array只是一個簡單的2D數組。 那部分工作正常。 但是接下來我嘗試:

PL.hold(True)
PL.scatter(x, y, 'blue')
PL.hold(False)

其中xy是我要繪制給定點的坐標。 但是,不是將點繪制在使用pcolor繪制的網格的單元格的中心,而是將點移到單元格的角(無論我選擇哪個單元格)。

您可以使用meshgrid生成點的網格。 如果您的采樣x和y是均勻的,則只需在每個方向上將間隔除以2。 例如,如果間隔為1,則加0.5並減去1:

import numpy as np
import matplotlib.pyplot as plt
r = np.arange(10)
p = np.arange(10)
R,P = np.meshgrid(r,p)
data = np.random.random((10,10))
plt.pcolor(R,P,data)
plt.scatter(R[:-1,:-1]+0.5,P[:-1,:-1]+0.5, color = 'blue')

在此處輸入圖片說明

這是在使用tripcolor情況下:可以計算點的質心: triang.triangles為您提供每個三角形的三個點索引,然后使用這三個點計算質心。 centroidX = (x1+x2+x3)/3.; centroidY = (y1+y2+y3)/3.; centroidX = (x1+x2+x3)/3.; centroidY = (y1+y2+y3)/3.;

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.tri as tri
x = np.random.random(10)
y = np.random.random(10)
z = np.random.random(10)
triang = tri.Triangulation(x, y)
plt.tripcolor(triang,z)
centroidX = [x[i].sum()/3. for i in triang.triangles]
centroidY = [y[i].sum()/3. for i in triang.triangles]
plt.scatter(centroidX,centroidY, color = 'blue')

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM