Triangular plot, Plotting, MATLAB, Ternary plot, color plot, Contour map

Still no one could help me with this question. I have a .csv file with 3 columns of different range of data. Each column contains 500,000 rows including some duplicate numbers. I am trying to plot a color plot like the one I attached here. A triangular color plot, like conotur map.

1 Comment

Hello Farshad,
I am too looking for getting a triangular plot. Did you made any more progress on that, if so then kindly share the script for my reference. Your help is appreciated Thank you

Sign in to comment.

Answers (2)

Let A be your m*3 column array. Try this:
x = A(:,1) ; y = A(:,2) ; z = A(:,3) ;
%%structured
xi = unique(x) ; yi = unique(y) ;
[X,Y] = meshgrid(xi,yi) ;
Z = reshape(z,size(X)) ;
figure
surf(X,Y,Z)
%%unstructured
dt = delaunayTriangulation(x,y) ;
tri = dt.ConnectivityList ;
figure
trisurf(tri,x,y,z)
%% USe Interpoaltion
m = 100 ; n = 100 ;
xi = linspace(min(x),max(x),m) ;
yi = linspace(min(y),max(y),n) ;
[X,Y] = meshgrid(xi,yi) ;
Z = griddata(x,y,z,X,Y) ;
pcolor(X,Y,Z)
shading interp
colorbar

6 Comments

Thanks KSSV for your answer. I ran your code and got this following erroe and run stoped at this stage:
Error using meshgrid (line 59)
Subscripting into a table using one subscript (as in t(i)) or three or more subscripts (as in t(i,j,k)) is not supported. Always
specify a row subscript and a variable subscript, as in t(rows,vars).
It is a mistake with class of variables. Attach your data here. You should read the data into matrix. I think you are reading it as a table.
You read the data like below:
A = xlsread("4b2_Combine.csv") ;
% remove outliers
x(x>100) = [] ;
y(y>100) = [] ;
z(z>100) = [];
% USe griddata
m = 1000 ; n = 1000 ;
xi = linspace(min(x),max(x),m) ;
yi = linspace(min(y),max(y),n) ;
[X,Y] = meshgrid(xi,yi) ;
Z = griddata(x,y,z,X,Y) ;
pcolor(X,Y,Z)
shading interp
colorbar
Thank you KSS for your time. Your code gave me the attached graph (The one with colorbar). But it is not something that I am trying to have. I also attached the plot that I wish to have. Is it possible to have this type of graph based on my dada?
If you know the triangular dimension.......make the vertices....use inpolygon and pick only the points inside this triangle and plot.

Sign in to comment.

How about make the data normalize? Then each triangle's sides will be betwee 0 to 1. But I am not sure how to code this.

2 Comments

No that will not help....do you have triangle coordinates?
What do you mean by triangle coordinates? I need to plot those 3 columns together as a colorplot, then the graph will be in triangle shape, same as attached plot.

Sign in to comment.

Products

Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!