Контурный график в Python, импортирующий txt-файл таблицы

Я пытаюсь сделать контурный сюжет вроде:

контур

Использование таблицы данных, например 3 столбца в txt-файле, с большим количеством строк.

Используя этот код:

import numpy as np import matplotlib.pyplot as plt import scipy.interpolate data = np.loadtxt(r'dataa.txt') a = [data[:,0]] b = [data[:,1]] n = [data[:,2]] x = np.asarray(a) y = np.asarray(b) z = np.asarray(n) print "x = ", x print "y = ", y print "z = ", z fig=plt.figure() CF = contour(x,y,z,colors = 'k') plt.xlabel("X") plt.ylabel("Y") plt.colorbar() plt.show() 

Я не знаю, почему, он не работает. Python дает мне правильные оси для значений, которые я ожидаю увидеть, но в графе просто пустое, и я знаю, что он импортирует данные правильно, потому что он показывает мне мои ценности перед сюжетом.

Пример таблицы: (разница в том, что моя таблица имеет 90000 строк) введите описание изображения здесь

Используя этот код:

 import numpy as np import matplotlib.pyplot as plt import scipy.interpolate N = 1000 #number of points for plotting/interpolation x, y, z = np.genfromtxt(r'dataa.txt', unpack=True) xi = np.linspace(x.min(), x.max(), N) yi = np.linspace(y.min(), y.max(), N) zi = scipy.interpolate.griddata((x, y), z, (xi[None,:], yi[:,None]), method='cubic') fig = plt.figure() plt.contour(xi, yi, zi) plt.xlabel("X") plt.ylabel("Y") plt.show() 

Ive получил этот результат: введите описание изображения здесь Я думаю, что у меня есть советы ошибочно.

One Solution collect form web for “Контурный график в Python, импортирующий txt-файл таблицы”

Следующее из моего комментария … во-первых, я бы заменил все эти строки:

 data = np.loadtxt(r'dataa.txt') a = [data[:,0]] b = [data[:,1]] n = [data[:,2]] x = np.asarray(a) y = np.asarray(b) z = np.asarray(n) 

С:

 x, y, z = np.genfromtxt(r'dataa.txt', unpack=True) 

Ваш исходный код добавляет дополнительную ось спереди, так как [data[:,0]] представляет собой список массивов с одним элементом. В результате x.shape будет (1, N) вместо if (N,) . Все это можно сделать автоматически, используя последнюю строку выше, или вы можете просто использовать одну и ту же загрузку data и сказать:

 x = data[:,0] y = data[:,1] z = data[:,2] 

так как эти фрагменты дадут вам массив назад.

Однако вы не совсем сделали, потому что plt.contour ожидает, что вы дадите ему 2d-массив для z , а не 1d-массив значений. Прямо сейчас у вас, кажется, есть значения z при заданных x, y точках, но contour ожидает, что вы дадите ему 2d-массив, как изображение.

Прежде чем я смогу ответить на этот вопрос, мне нужно знать, как x и y расположены на расстоянии. Если вы регулярно, вы можете просто заполнить массив довольно легко. Если вы не регулярно, вам в основном нужно интерполировать, прежде чем вы сможете сделать контурный сюжет.

Чтобы сделать интерполяцию, используйте

 import numpy as np import matplotlib.pyplot as plt import scipy.interpolate N = 1000 #number of points for plotting/interpolation x, y, z = np.genfromtxt(r'dataa.txt', unpack=True) xi = np.linspace(x.min(), x.max(), N) yi = np.linspace(y.min(), y.max(), N) zi = scipy.interpolate.griddata((x, y), z, (xi[None,:], yi[:,None]), method='cubic') fig = plt.figure() plt.contour(xi, yi, zi) plt.xlabel("X") plt.ylabel("Y") plt.show() 
  • Создание отчетов с помощью Python: PDF или HTML в PDF
  • Динамическая ось времени MatPlotLib
  • python - загрузка сюжета из памяти в s3 с использованием matplotlib и boto
  • matplot imshow добавить метку к каждому цвету и поместить в легенду
  • Скрытие линий после показа фигуры пистолета
  • Как создать стандартную панель цветов для ряда графиков в python
  • Как повторно использовать графики в matplotlib?
  • time.sleep () требуется, чтобы QThread реагировал?
  • Python - лучший язык программирования в мире.