Проблемы с графиком полярного контура Python –Python

Программы на Python
Anonymous
Проблемы с графиком полярного контура Python –

Сообщение Anonymous »

Я пытаюсь решить эту проблему и сталкиваюсь с множеством проблем с контурным графиком в Python. У меня есть относительно большой набор данных в виде XYZ (точка 20000) с полярной составляющей (градусы), и они не являются равномерно распределенными -0 фактическими данными измерений. Мне нужно создать контурный полярный график. Я пробовал pet.contour, но безуспешно. Тщательно просмотрели тысячи сообщений, некоторые из них были полезными, некоторые содержали неполную информацию.
Мне удалось частично добиться успеха с триконтуром, но выглядит оно не очень хорошо. Пример данных здесь. data.xls
Вот код и выходные данные:

Код: Выделить всё

df = df.read_excel('......xlsx', ...)

data_arr = df.to_numpy()

direction= np.radians(data_arr[:,1])
values = data_arr[:,0]
zeniths = data_arr[:,2]

r, theta = np.meshgrid(zeniths,direction)
fig, ax = plt.subplots(subplot_kw=dict(projection='polar'))

#/limits for the colorscale
lmin=min(data_arr[:,0])
lmax=max(data_arr[:,0])

colormap = plt.get_cmap('rainbow')
norm = matplotlib.colors.Normalize(lmin, lmax)

ax.set_theta_zero_location("N")
ax.set_theta_direction(-1)

ax.tricontourf(direction,zeniths,values,30, cmap=colormap)

plt.show()
и получите этот график
введите сюда описание изображения
Предпочли бы лучшую интерполяцию.
Один пример того, что я пробовал:

Код: Выделить всё

import pandas as df
import numpy as np
from matplotlib.pyplot import *
import matplotlib.pyplot as plt
from scipy import interpolate

df = df.read_excel('...xlsx', )
data_arr = df.to_numpy()

direction= np.radians(data_arr[:,1])
values = data_arr[:,0]
zeniths = data_arr[:,2]

def grid(direction, zeniths, values, resX=100, resY=100):
xi = np.linspace(min(direction), max(direction), resX)
yi = np.linspace(min(zeniths), max(zeniths), resY)
Z = interpolate.griddata(direction, zeniths, values, xi, yi, method='cubic')
X, Y = np.meshgrid(xi, yi)
return X, Y, Z
X, Y, Z = grid(direction, zeniths, values)
contour = plt.contourf(X,Y,Z)
Выдает ошибку:
Произошло исключение: TypeError
griddata() получил несколько значений для аргумента «метод»
Файл «…Contour PolarPlot 2», строка 20, в
grid=Z = interpolate.griddata(направление, зениты, значения, xi, yi, метод='cubic')
Файл "/Contour PolarPlot 2", строка 23, в
X, Y, Z = сетка(направление, зениты, значения)
^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^
Ошибка типа: Griddata() получила несколько значений для аргумента «метод».
Пробовал другую комбинацию контурф, контур и т. д. Всегда возникает какая-то ошибка. Возможно, она связана с неправильным форматом массива, но не знаю, как ее исправить.

Подробнее здесь: https://stackoverflow.com/questions/783 ... t-problems

Вернуться в «Python»