Here I present two solutions.
Solution 1 (left part of the image)
This tries to reproduce the Matlab figure with the capabilities of PGFPlots. To "confirm" that I did it right, I first saved your Matlab image and cropped the axis parts. Then I added this as \addplot graphics and on top of that I added the real plot, i.e. \addplot contour filled plot in 50% transparent. That allowed to check, if I found the interval boundaries right.
Said that I think your above statement is wrong. It seems that you removed the color for all values >1600. This also makes sense, because the maximum value in the P3.dat file is 1723 ...
Solution 2 (right part of the image)
Here I just used the above cropped Matlab image and reproduced the colorbar.
Comparison
As you can see in solution 1 there are some "artifacts" which don't make the result as smooth as the Matlab result. That is, because the contours calculation/visualization only depends on the features of your PDF viewer. Said that it could be that your result differs from mine. I made the screenshot from a view in Acrobat Reader XI.
That is why I favor solution 2.
To improve the result you should modify your Matlab view to only show the contours, that means remove the axis and the grid lines. Then the only difference could be the colors used/shown in Matlab contour plot and the colorbar calculated by PGFPlots. Concrete I mean that one could use RGB colors and the other CMYK. But since you have the illustrator as you said, you could check for that and adapt one of the both parts, i.e. the Matlab or PGFPlots output.
You could also create a "pure", that means also without any axis, version of the colorbar in Matlab and also import this graphics into the PGFPlots colorbar. Of course then colors are identical.
For more details on how the solutions work, please have a look at the comments in the code.
% used PGFPlots v1.14
\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{
% you need at least this `compat' level or higher to use the below features
compat=1.14,
% define a "white" colormap for the white part of the image
colormap={no data}{
color=(white)
% color=(white)
color=(red)
},
% load this colormap which is later used
colormap/bluered,
% define the "parula" colormap that was used to create the exported image
% from Matlab
% (borrowed from http://tex.stackexchange.com/a/336647/95441)
colormap={parula}{
rgb255=(53,42,135)
rgb255=(15,92,221)
rgb255=(18,125,216)
rgb255=(7,156,207)
rgb255=(21,177,180)
rgb255=(89,189,140)
rgb255=(165,190,107)
rgb255=(225,185,82)
rgb255=(252,206,46)
rgb255=(249,251,14)
},
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view={0}{90},
colorbar,
% modify the style of the colorbar a bit
colorbar style={
ytick distance=200,
ymax=1600,
},
% this key--value is needed because of the `\addplot graphics'
enlargelimits=false,
]
% import the "exported" graphics
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {P3};
% now try to reproduce the style of the exported graphics
\addplot3 [
% for that use, e.g., the `countour filled' feature ...
contour filled={
% ... in combination with the `levels of colormap' feature
% which allows to customize the used colormap
levels from colormap={
% this part of the colormap is for the "colored" part
of colormap={
% here we use the above initialized `bluered' colormap
bluered,
% % (`viridis' is a colormap which is similar to the
% % used `parula' comormap in Matlab.
% % But because the yellow is hard to identify
% % in this context we use the above colormap)
% viridis,
% with this we state there is more to come
target pos max=,
% and here we state where the corresponding levels
% should *start*
target pos={200,400,600,800,1000,1200,1400},
},
% here comes the second part of the colormap which
% should have no color which isn't possible or at least
% I don't have an idea how to do it ...
of colormap={
% ... so I use a "white" colormap instead
no data,
% here the lower end isn't needed because that was
% specified in the first part of the colormap
target pos min=,
% and here is the corresponding interval *start*
% for that colormap
% (as you can see -- or not ;) -- the white starts
% at position/values >=1600)
target pos={1600},
},
},
},
% you need only to provide `rows' or `cols' because
% PGFPlots can then calculate the other value together with
% the provded number of data points
mesh/rows=31,
% make the plot half transparent to check that the `target pos'
% of the colormap are chosen correct
opacity=0.5,
] table {P3.dat};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
% show the colorbar
colorbar,
% because there is no real plot where PGFPlots can get the `meta'
% data from, one has to provide them manually
point meta min=200,
point meta max=1800,
%%% here we define the needed colormap and its style again
% we want to use constant intervals in the colormap
colormap access=piecewise const,
% and also here we have to provide the limits again ...
of colormap/target pos min*=200,
of colormap/target pos max*=1800,
% ... and use this feature which makes easier to provide the
% samples at the right position
% (please have a look at the PGFPlots manual for more details)
of colormap/sample for=const,
% this is similar to the above example
colormap={CM}{
of colormap={
% ... except that we use the `parula' colormap here
parula,
target pos max=,
target pos={200,400,600,800,1000,1200,1400,1600},
},
of colormap={
no data,
target pos min=,
% here you can use an arbitrary value which is greater than
% the last `target pos' of the previous colormap part of course.
% But here I tried to "overwrite" the last color of the
% colormap, i.e. the "bright" yellow, as well by just
% giving it a very small interval
% (to show the effect increase the `ymax' value in the
% `colorbar style')
target pos={1601},
},
},
% modify the style of the colorbar a bit
colorbar style={
ytick distance=200,
ymin=300,
ymax=1600,
},
% this key--value is needed because of the `\addplot graphics'
enlargelimits=false,
]
\addplot graphics [
xmin=0,
xmax=50,
ymin=0,
ymax=150,
] {P3};
\end{axis}
\end{tikzpicture}
\end{document}

mesh. That means that the given "blocks" in the first data columns need to be identical (always). (2) You don't have any empty lines in your data file and (at least from the given table) PGFPlots cannot guess the number ofmesh/rowsand/ormesh/colsright. For me your example compiles fine when you comment/delete all data rows after line 40, i.e. the line starting with a value of2and providingmesh/cols=8to the\addplot3options. – Stefan Pinnow Jan 22 '17 at 12:38view={0}{90}to theaxisoptions. To thecontour filledquestion: As I said, you need to provide a "uniform" grid, i.e. the number ofrowsand the number ofcolumnsin the grid have to be identical. So you have either the possibility to add some dummy grid points and useNaNas z value (assuming that the white parts don't have any value) or provide additional grid points in between the given "boundaries" with the corresponding z value. (I am not sure if method 2 really works ...) – Stefan Pinnow Jan 22 '17 at 13:36.datfile withNaNz values for the white space. Now I have a uniform mesh with 11 columns and 31 rows. However, I got this errorPackage pgfplots Error: the arguments of [mesh/rows=31,mesh/cols=11] assume 3omplete or overcomplete!? [Use mesh/check=false to disable this message]. \end{axis}. What might be missing? – Diaa Jan 22 '17 at 13:55NaN, in the first row. So you have state that this is not the case writingtable [header=false]. But also then this will not change much about the result. That seems to be, because my suggested trick usingNaNdoesn't work. If you replace theNaNwith, e.g. 200, you will get a (better) result, but that doesn't look similar to your Matlab screenshot. ... – Stefan Pinnow Jan 22 '17 at 16:52\addplot graphicsfeature to import it and provide the axis by PGFPlots. – Stefan Pinnow Jan 22 '17 at 16:56(x,y)with temperaturez. The white space had particles whose temperatures exceeded certain threshold, so I removed these particles in my first trial and made theirzvaluesNaNas you suggested in the second trial. This space in MATLAB originally had yellow fill color, but I removed it using illustrator to make it white since it represents void. – Diaa Jan 22 '17 at 17:21Update 3, I created a contour using my raw MATLAB data including all the points original values, I would be grateful if you could tell me how can I prevent printing any contour lines ofzvalues equivalent to or exceeding1723(i.e. the red area). – Diaa Jan 22 '17 at 18:14