tiempo real polar matrices hacer grafico graficas graficar grafica dispersion diagrama crear como python r matplotlib rpy2

python - real - Trazar puntos de datos de 3 tuplas en un gráfico de superficie/contorno usando matplotlib



graficas en 3d python matplotlib (3)

Con pandas y numpy para importar y manipular datos, con matplot.pylot.contourf para trazar la imagen

import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.mlab import griddata PATH=''/YOUR/CSV/FILE'' df=pd.read_csv(PATH) #Get the original data x=df[''COLUMNNE''] y=df[''COLUMNTWO''] z=df[''COLUMNTHREE''] #Through the unstructured data get the structured data by interpolation xi = np.linspace(x.min()-1, x.max()+1, 100) yi = np.linspace(y.min()-1, y.max()+1, 100) zi = griddata(x, y, z, xi, yi, interp=''linear'') #Plot the contour mapping and edit the parameter setting according to your data (http://matplotlib.org/api/pyplot_api.html?highlight=contourf#matplotlib.pyplot.contourf) CS = plt.contourf(xi, yi, zi, 5, levels=[0,50,100,1000],colors=[''b'',''y'',''r''],vmax=abs(zi).max(), vmin=-abs(zi).max()) plt.colorbar() #Save the mapping and save the image plt.savefig(''/PATH/OF/IMAGE.png'') plt.show()

Imagen de ejemplo

Tengo algunos datos de superficie que son generados por un programa externo como valores XYZ. Quiero crear los siguientes gráficos, usando matplotlib:

  • Parcela de superficie
  • Dibujo de contorno
  • Parcela de contorno superpuesta con una parcela de superficie

He visto varios ejemplos para trazar superficies y contornos en matplotlib; sin embargo, los valores Z parecen ser una función de X e Y, es decir, Y ~ f (X, Y).

Supongo que de alguna manera necesitaré transformar mis variables Y, pero aún no he visto ningún ejemplo que muestre cómo hacerlo.

Entonces, mi pregunta es esta: dado un conjunto de puntos (X, Y, Z), ¿cómo puedo generar diagramas de superficie y contorno a partir de esos datos?

Por cierto, solo para aclarar, NO quiero crear gráficos de dispersión. Además, aunque mencioné matplotlib en el título, no soy reacio al uso de rpy (2), si eso me permite crear estos gráficos.


Diagrama de contorno con rpy2 + ggplot2:

from rpy2.robjects.lib.ggplot2 import ggplot, aes_string, geom_contour from rpy2.robjects.vectors import DataFrame # Assume that data are in a .csv file with three columns X,Y,and Z # read data from the file dataf = DataFrame.from_csv(''mydata.csv'') p = ggplot(dataf) + / geom_contour(aes_string(x = ''X'', y = ''Y'', z = ''Z'')) p.plot()

Parcela de superficie con rpy2 + celosía:

from rpy2.robjects.packages import importr from rpy2.robjects.vectors import DataFrame from rpy2.robjects import Formula lattice = importr(''lattice'') rprint = robjects.globalenv.get("print") # Assume that data are in a .csv file with three columns X,Y,and Z # read data from the file dataf = DataFrame.from_csv(''mydata.csv'') p = lattice.wireframe(Formula(''Z ~ X * Y''), shade = True, data = dataf) rprint(p)


Para hacer un trazado de contorno , necesita interpolar sus datos a una cuadrícula regular http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data

un ejemplo rápido:

>>> xi = linspace(min(X), max(X)) >>> yi = linspace(min(Y), max(Y)) >>> zi = griddata(X, Y, Z, xi, yi) >>> contour(xi, yi, zi)

para la superficie http://matplotlib.sourceforge.net/examples/mplot3d/surface3d_demo.html

>>> from mpl_toolkits.mplot3d import Axes3D >>> fig = figure() >>> ax = Axes3D(fig) >>> xim, yim = meshgrid(xi, yi) >>> ax.plot_surface(xim, yim, zi) >>> show() >>> help(meshgrid(x, y)) Return coordinate matrices from two coordinate vectors. [...] Examples -------- >>> X, Y = np.meshgrid([1,2,3], [4,5,6,7]) >>> X array([[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]) >>> Y array([[4, 4, 4], [5, 5, 5], [6, 6, 6], [7, 7, 7]])

contorno en 3D http://matplotlib.sourceforge.net/examples/mplot3d/contour3d_demo.html

>>> fig = figure() >>> ax = Axes3D(fig) >>> ax.contour(xi, yi, zi) # ax.contourf for filled contours >>> show()