Meshgrid RuntimeError: In initialize: Triangulation is invalid
Verfasst: Dienstag 2. Mai 2017, 13:35
Hallo zusammen,
ich versuche derzeit eine 3D Messung mittels eines Meshgrids auszuwerten. Wenn ich die Daten das erste Mal einlese und mir darstellen lasse, klappt alles ganz wunderbar. Anschließend versuche ich mir einen zweites Meshgrid mit nur der Hälfte der Daten auszuwerten und versuche, dann nur die Daten zu übernehmen, die in der unteren Hälfte des y-Bereiches sind. Leider kommt dann der Fehler zur lezten Zeile: RuntimeError: In initialize: Triangulation is invalid
Hier mal mein Code:
Vielen Dank,
Thommy
ich versuche derzeit eine 3D Messung mittels eines Meshgrids auszuwerten. Wenn ich die Daten das erste Mal einlese und mir darstellen lasse, klappt alles ganz wunderbar. Anschließend versuche ich mir einen zweites Meshgrid mit nur der Hälfte der Daten auszuwerten und versuche, dann nur die Daten zu übernehmen, die in der unteren Hälfte des y-Bereiches sind. Leider kommt dann der Fehler zur lezten Zeile: RuntimeError: In initialize: Triangulation is invalid
Hier mal mein Code:
Code: Alles auswählen
#Aus txt Daten x,y,z wird eine RSM erstellt
#Uli Tromm
from __future__ import unicode_literals #Importieren der libraries
import os
import matplotlib
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.unicode'] = True
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import sympy as sy
from pylab import griddata
from matplotlib.ticker import FuncFormatter
from matplotlib import colors
allfolders=os.listdir()
for item in allfolders:
if item.find ('.txt') !=-1 and item.find('RSM') !=-1:
txtfile=item
Daten=np.genfromtxt(txtfile,dtype=str)
def func(x):
return float(x.replace(',','.'))
func_vec=np.vectorize(func)
Daten=func_vec(Daten)
with open ('Versuch.txt','wb') as f:
np.savetxt(f,Daten,fmt='%7.6g', delimiter='\t')
x_dat=Daten[0:,0]
y_dat=Daten[0:,1]
z_dat=Daten[0:,2]
N_x, N_y = 256, 256
x = np.linspace(x_dat.min(), x_dat.max(), N_x)
y = np.linspace(y_dat.min(), y_dat.max(), N_y)
xx, yy = np.meshgrid(x, y)
z_dat = np.clip(z_dat, 1, z_dat.max())
gridded_data = griddata(x_dat, y_dat, z_dat, xx, yy, interp='linear')
fig, axis = plt.subplots()
a_x = (x_dat.max() - x_dat.min()) / N_x
a_y = (y_dat.max() - y_dat.min()) / N_y
im = axis.imshow(gridded_data, origin='lower', interpolation='none',
norm=colors.LogNorm())
ff_x = FuncFormatter(lambda x, pos: '{:.3g}'.format((x * a_x) + x_dat.min()))
ff_y = FuncFormatter(lambda y, pos: '{:.3g}'.format((y * a_y) + y_dat.min()))
axis.xaxis.set_major_formatter(ff_x)
axis.yaxis.set_major_formatter(ff_y)
cb = plt.colorbar(im)
plt.xlabel('q \u2225')
plt.ylabel('q \u22A5')
plt.savefig('RSM.jpg', format='jpg', dpi=1000)
plt.show()
y_hälfte=((max(y_dat)-min(y_dat))/2)+min(y_dat)
x_li=[]
y_li=[]
z_li=[]
for count, elem in enumerate(y_dat):
if elem < y_hälfte:
Loc_elem= count
x_li.append(x_dat[Loc_elem])
y_li.append(y_dat[Loc_elem])
z_li.append(z_dat[Loc_elem])
x_limit=np.asarray(x_li)
y_limit=np.asarray(y_li)
z_limit=np.asarray(z_li)
N_x, N_y = 256, 256
x = np.linspace(x_limit.min(), x_limit.max(), N_x)
y = np.linspace(y_limit.min(), y_limit.max(), N_y)
xx, yy = np.meshgrid(x, y)
gridded_data = griddata(x_limit, y_limit, z_limit, xx, yy, interp='linear')
Thommy