Pcolormesh没有得到正确的位置matplotlib(Pcolormesh not getting correct position matplotlib)

编程入门 行业动态 更新时间:2024-10-24 14:24:30
Pcolormesh没有得到正确的位置matplotlib(Pcolormesh not getting correct position matplotlib)

我正在使用以下代码在png图像上绘制数据:

x, y = np.genfromtxt('pogba_t1314.csv', delimiter=',', unpack=True) print(x[1], y[1]) y = y[np.logical_not(np.isnan(y))] x = x[np.logical_not(np.isnan(x))] k = gaussian_kde(np.vstack([x, y])) xi, yi = np.mgrid[x.min():x.max():x.size**0.5*1j,y.min():y.max():y.size**0.5*1j] zi = k(np.vstack([xi.flatten(), yi.flatten()])) fig = plt.figure(figsize=(9,10)) ax1 = fig.add_subplot(211) ax1.pcolormesh(xi, yi, zi.reshape(xi.shape), alpha=0.5) ax1.plot(y,x, "o") ax1.set_xlim(0, 740) ax1.set_ylim(515, 0) im = plt.imread('statszone_football_pitch.png') ax1.imshow(im, extent=[0, 740, 0, 515], aspect='auto')

结果如下:

Pcolormesh应该在整个图像上,但事实并非如此。 我该如何设置正确的位置? 为什么我得到更小的pcolormesh尊重整个音高? 我应该有这样的东西(即使这指的是contourf):

I'm plotting data on top of a png image with this code:

x, y = np.genfromtxt('pogba_t1314.csv', delimiter=',', unpack=True) print(x[1], y[1]) y = y[np.logical_not(np.isnan(y))] x = x[np.logical_not(np.isnan(x))] k = gaussian_kde(np.vstack([x, y])) xi, yi = np.mgrid[x.min():x.max():x.size**0.5*1j,y.min():y.max():y.size**0.5*1j] zi = k(np.vstack([xi.flatten(), yi.flatten()])) fig = plt.figure(figsize=(9,10)) ax1 = fig.add_subplot(211) ax1.pcolormesh(xi, yi, zi.reshape(xi.shape), alpha=0.5) ax1.plot(y,x, "o") ax1.set_xlim(0, 740) ax1.set_ylim(515, 0) im = plt.imread('statszone_football_pitch.png') ax1.imshow(im, extent=[0, 740, 0, 515], aspect='auto')

Here is the result:

Pcolormesh should be over the whole image, but it is not. How can i set the correct position? Why i get smaller pcolormesh respect of whole pitch? I should have something like this (even if this refers to contourf):

最满意答案

你的代码似乎工作正常。 问题在于,图像中代表x轴的不是你在图中给出的x轴。 也就是说,如果你将x改为y(反之亦然),你将获得正确的情节:

from scipy.stats.kde import gaussian_kde import matplotlib.pyplot as plt import numpy as np x, y = np.genfromtxt('pogba_t1314.csv', delimiter=',', unpack=True) print(x[1], y[1]) y = y[np.logical_not(np.isnan(y))] x = x[np.logical_not(np.isnan(x))] k = gaussian_kde(np.vstack([x, y])) #xi, yi = np.mgrid[x.min():x.max():x.size**0.5*1j,y.min():y.max():y.size**0.5*1j] xi, yi = np.mgrid[y.min():y.max():y.size**0.5*1j,x.min():x.max():x.size**0.5*1j] # Changed this. #zi = k(np.vstack([xi.flatten(), yi.flatten()])) zi = k(np.vstack([yi.flatten(),xi.flatten()])) # And this. fig = plt.figure(figsize=(9,10)) ax1 = fig.add_subplot(111) ax1.pcolormesh(xi, yi, zi.reshape(xi.shape), alpha=0.5) ax1.plot(y,x, "o") ax1.set_xlim(0, 740) ax1.set_ylim(515, 0) im = plt.imread('statszone_football_pitch.jpg') ax1.imshow(im, extent=[0, 740, 0, 515], aspect='auto') plt.show()

结果如下:

pcolormesh在图像上

我猜这是你散乱点的一种密度图。

Your code seems to work fine. The problem is that what represents your x-axis in the image is not what you giving as x-axis in the plot. That said if you change x to y (and vice-versa) you'll obtain the correct plot:

from scipy.stats.kde import gaussian_kde import matplotlib.pyplot as plt import numpy as np x, y = np.genfromtxt('pogba_t1314.csv', delimiter=',', unpack=True) print(x[1], y[1]) y = y[np.logical_not(np.isnan(y))] x = x[np.logical_not(np.isnan(x))] k = gaussian_kde(np.vstack([x, y])) #xi, yi = np.mgrid[x.min():x.max():x.size**0.5*1j,y.min():y.max():y.size**0.5*1j] xi, yi = np.mgrid[y.min():y.max():y.size**0.5*1j,x.min():x.max():x.size**0.5*1j] # Changed this. #zi = k(np.vstack([xi.flatten(), yi.flatten()])) zi = k(np.vstack([yi.flatten(),xi.flatten()])) # And this. fig = plt.figure(figsize=(9,10)) ax1 = fig.add_subplot(111) ax1.pcolormesh(xi, yi, zi.reshape(xi.shape), alpha=0.5) ax1.plot(y,x, "o") ax1.set_xlim(0, 740) ax1.set_ylim(515, 0) im = plt.imread('statszone_football_pitch.jpg') ax1.imshow(im, extent=[0, 740, 0, 515], aspect='auto') plt.show()

The result is this:

pcolormesh over image

I guess it's a kind of density plot for your scattered points.

更多推荐

本文发布于:2023-07-31 00:03:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1340325.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:正确   位置   Pcolormesh   position   correct

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!