Plotting 3-tuple data points in a surface / contour plot using matplotlib Plotting 3-tuple data points in a surface / contour plot using matplotlib r r

Plotting 3-tuple data points in a surface / contour plot using matplotlib


for do a contour plot you need interpolate your data to a regular grid http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data

a quick example:

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

for the surface 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]])

contour in 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()


With pandas and numpy to import and manipulate data, with matplot.pylot.contourf to plot the image

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom matplotlib.mlab import griddataPATH='/YOUR/CSV/FILE'df=pd.read_csv(PATH)#Get the original datax=df['COLUMNNE']y=df['COLUMNTWO']z=df['COLUMNTHREE']#Through the unstructured data get the structured data by interpolationxi = 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 imageplt.savefig('/PATH/OF/IMAGE.png')plt.show()

Example Image


Contour plot with rpy2 + ggplot2:

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

Surface plot with rpy2 + lattice:

from rpy2.robjects.packages import importrfrom rpy2.robjects.vectors import DataFramefrom rpy2.robjects import Formulalattice = 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 filedataf = DataFrame.from_csv('mydata.csv')p = lattice.wireframe(Formula('Z ~ X * Y'), shade = True, data = dataf)rprint(p)