5

I'm trying the replicate the following rendition of the Rosenbrock function in TikZ and pgfplots: https://commons.wikimedia.org/wiki/File:Rosenbrock_function.svg

Here's my MWE:

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}

\begin{axis}[samples=50,grid=both,domain=-2:2,y domain=-1:3,xmin=-2,xmax=2,ymin=-1,ymax=3,
zmin=0,zmax=2500,tick label style={font=\tiny},xtick={-2,-1.5,...,2},ytick={-1,-0.5,...,3},
ztick={0,500,...,2500},view={145}{40},xlabel={$x$},ylabel={$y$},x dir=reverse,y dir=reverse,
colormap/hot2,point meta min=0, point meta max=10]

\addplot3[surf] {(1-x)^2+100*(y-x^2)^2};
\end{axis}
\end{tikzpicture}
\end{document}

enter image description here

So far I was unable to get the same high-contrast image. The author originally used a mathematical trick in Matlab to enhance contrast in the region of interest (near the global optimum) which I couldn't replicate with TikZ/pgfplots.

Any ideas?

6

You may use:

  • colormap/jet to get the same colormap as Matlab,

  • point meta=ln(z+1) to use a logarithmic interpolation of z in this colormap.

  • draw=white,line width=.1pt to draw mesh with thin white lines.

Result:

enter image description here

Code:

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}

\begin{axis}[
  samples=70,
  grid=both,
  domain=-2:2, xmin=-2,xmax=2,
  y domain=-1:3, ymin=-1,ymax=3,
  zmin=0,zmax=2500,
  tick label style={font=\tiny},
  xtick={-2,-1.5,...,2},
  ytick={-1,-0.5,...,3},
  ztick={0,500,...,2500},
  view={145}{40},
  xlabel={$x$}, ylabel={$y$},
  x dir=reverse, y dir=reverse,
  colormap/jet, point meta=ln(z+1),
  ]

\addplot3[surf,shader=flat,draw=white,line width=.1pt] {(1-x)^2+100*(y-x^2)^2};
\end{axis}
\end{tikzpicture}
\end{document}

Edit

As required by comment, the same surface with viridis colormap:

enter image description here

The definition of viridis colormap:

\pgfplotsset{colormap={viridis}{
rgb=(0.26700401,0.00487433,0.32941519)
rgb=(0.26851048,0.00960483,0.33542652)
rgb=(0.26994384,0.01462494,0.34137895)
rgb=(0.27130489,0.01994186,0.34726862)
rgb=(0.27259384,0.02556309,0.35309303)
rgb=(0.27380934,0.03149748,0.35885256)
rgb=(0.27495242,0.03775181,0.36454323)
rgb=(0.27602238,0.04416723,0.37016418)
rgb=(0.2770184,0.05034437,0.37571452)
rgb=(0.27794143,0.05632444,0.38119074)
rgb=(0.27879067,0.06214536,0.38659204)
rgb=(0.2795655,0.06783587,0.39191723)
rgb=(0.28026658,0.07341724,0.39716349)
rgb=(0.28089358,0.07890703,0.40232944)
rgb=(0.28144581,0.0843197,0.40741404)
rgb=(0.28192358,0.08966622,0.41241521)
rgb=(0.28232739,0.09495545,0.41733086)
rgb=(0.28265633,0.10019576,0.42216032)
rgb=(0.28291049,0.10539345,0.42690202)
rgb=(0.28309095,0.11055307,0.43155375)
rgb=(0.28319704,0.11567966,0.43611482)
rgb=(0.28322882,0.12077701,0.44058404)
rgb=(0.28318684,0.12584799,0.44496)   
rgb=(0.283072,0.13089477,0.44924127)
rgb=(0.28288389,0.13592005,0.45342734)
rgb=(0.28262297,0.14092556,0.45751726)
rgb=(0.28229037,0.14591233,0.46150995)
rgb=(0.28188676,0.15088147,0.46540474)
rgb=(0.28141228,0.15583425,0.46920128)
rgb=(0.28086773,0.16077132,0.47289909)
rgb=(0.28025468,0.16569272,0.47649762)
rgb=(0.27957399,0.17059884,0.47999675)
rgb=(0.27882618,0.1754902,0.48339654)
rgb=(0.27801236,0.18036684,0.48669702)
rgb=(0.27713437,0.18522836,0.48989831)
rgb=(0.27619376,0.19007447,0.49300074)
rgb=(0.27519116,0.1949054,0.49600488)
rgb=(0.27412802,0.19972086,0.49891131)
rgb=(0.27300596,0.20452049,0.50172076)
rgb=(0.27182812,0.20930306,0.50443413)
rgb=(0.27059473,0.21406899,0.50705243)
rgb=(0.26930756,0.21881782,0.50957678)
rgb=(0.26796846,0.22354911,0.5120084) 
rgb=(0.26657984,0.2282621,0.5143487) 
rgb=(0.2651445,0.23295593,0.5165993) 
rgb=(0.2636632,0.23763078,0.51876163)
rgb=(0.26213801,0.24228619,0.52083736)
rgb=(0.26057103,0.2469217,0.52282822)
rgb=(0.25896451,0.25153685,0.52473609)
rgb=(0.25732244,0.2561304,0.52656332)
rgb=(0.25564519,0.26070284,0.52831152)
rgb=(0.25393498,0.26525384,0.52998273)
rgb=(0.25219404,0.26978306,0.53157905)
rgb=(0.25042462,0.27429024,0.53310261)
rgb=(0.24862899,0.27877509,0.53455561)
rgb=(0.2468114,0.28323662,0.53594093)
rgb=(0.24497208,0.28767547,0.53726018)
rgb=(0.24311324,0.29209154,0.53851561)
rgb=(0.24123708,0.29648471,0.53970946)
rgb=(0.23934575,0.30085494,0.54084398)
rgb=(0.23744138,0.30520222,0.5419214) 
rgb=(0.23552606,0.30952657,0.54294396)
rgb=(0.23360277,0.31382773,0.54391424)
rgb=(0.2316735,0.3181058,0.54483444)
rgb=(0.22973926,0.32236127,0.54570633)
rgb=(0.22780192,0.32659432,0.546532)  
rgb=(0.2258633,0.33080515,0.54731353)
rgb=(0.22392515,0.334994,0.54805291)
rgb=(0.22198915,0.33916114,0.54875211)
rgb=(0.22005691,0.34330688,0.54941304)
rgb=(0.21812995,0.34743154,0.55003755)
rgb=(0.21620971,0.35153548,0.55062743)
rgb=(0.21429757,0.35561907,0.5511844) 
rgb=(0.21239477,0.35968273,0.55171011)
rgb=(0.2105031,0.36372671,0.55220646)
rgb=(0.20862342,0.36775151,0.55267486)
rgb=(0.20675628,0.37175775,0.55311653)
rgb=(0.20490257,0.37574589,0.55353282)
rgb=(0.20306309,0.37971644,0.55392505)
rgb=(0.20123854,0.38366989,0.55429441)
rgb=(0.1994295,0.38760678,0.55464205)
rgb=(0.1976365,0.39152762,0.55496905)
rgb=(0.19585993,0.39543297,0.55527637)
rgb=(0.19410009,0.39932336,0.55556494)
rgb=(0.19235719,0.40319934,0.55583559)
rgb=(0.19063135,0.40706148,0.55608907)
rgb=(0.18892259,0.41091033,0.55632606)
rgb=(0.18723083,0.41474645,0.55654717)
rgb=(0.18555593,0.4185704,0.55675292)
rgb=(0.18389763,0.42238275,0.55694377)
rgb=(0.18225561,0.42618405,0.5571201) 
rgb=(0.18062949,0.42997486,0.55728221)
rgb=(0.17901879,0.43375572,0.55743035)
rgb=(0.17742298,0.4375272,0.55756466)
rgb=(0.17584148,0.44128981,0.55768526)
rgb=(0.17427363,0.4450441,0.55779216)
rgb=(0.17271876,0.4487906,0.55788532)
rgb=(0.17117615,0.4525298,0.55796464)
rgb=(0.16964573,0.45626209,0.55803034)
rgb=(0.16812641,0.45998802,0.55808199)
rgb=(0.1666171,0.46370813,0.55811913)
rgb=(0.16511703,0.4674229,0.55814141)
rgb=(0.16362543,0.47113278,0.55814842)
rgb=(0.16214155,0.47483821,0.55813967)
rgb=(0.16066467,0.47853961,0.55811466)
rgb=(0.15919413,0.4822374,0.5580728) 
rgb=(0.15772933,0.48593197,0.55801347)
rgb=(0.15626973,0.4896237,0.557936)  
rgb=(0.15481488,0.49331293,0.55783967)
rgb=(0.15336445,0.49700003,0.55772371)
rgb=(0.1519182,0.50068529,0.55758733)
rgb=(0.15047605,0.50436904,0.55742968)
rgb=(0.14903918,0.50805136,0.5572505) 
rgb=(0.14760731,0.51173263,0.55704861)
rgb=(0.14618026,0.51541316,0.55682271)
rgb=(0.14475863,0.51909319,0.55657181)
rgb=(0.14334327,0.52277292,0.55629491)
rgb=(0.14193527,0.52645254,0.55599097)
rgb=(0.14053599,0.53013219,0.55565893)
rgb=(0.13914708,0.53381201,0.55529773)
rgb=(0.13777048,0.53749213,0.55490625)
rgb=(0.1364085,0.54117264,0.55448339)
rgb=(0.13506561,0.54485335,0.55402906)
rgb=(0.13374299,0.54853458,0.55354108)
rgb=(0.13244401,0.55221637,0.55301828)
rgb=(0.13117249,0.55589872,0.55245948)
rgb=(0.1299327,0.55958162,0.55186354)
rgb=(0.12872938,0.56326503,0.55122927)
rgb=(0.12756771,0.56694891,0.55055551)
rgb=(0.12645338,0.57063316,0.5498411) 
rgb=(0.12539383,0.57431754,0.54908564)
rgb=(0.12439474,0.57800205,0.5482874) 
rgb=(0.12346281,0.58168661,0.54744498)
rgb=(0.12260562,0.58537105,0.54655722)
rgb=(0.12183122,0.58905521,0.54562298)
rgb=(0.12114807,0.59273889,0.54464114)
rgb=(0.12056501,0.59642187,0.54361058)
rgb=(0.12009154,0.60010387,0.54253043)
rgb=(0.11973756,0.60378459,0.54139999)
rgb=(0.11951163,0.60746388,0.54021751)
rgb=(0.11942341,0.61114146,0.53898192)
rgb=(0.11948255,0.61481702,0.53769219)
rgb=(0.11969858,0.61849025,0.53634733)
rgb=(0.12008079,0.62216081,0.53494633)
rgb=(0.12063824,0.62582833,0.53348834)
rgb=(0.12137972,0.62949242,0.53197275)
rgb=(0.12231244,0.63315277,0.53039808)
rgb=(0.12344358,0.63680899,0.52876343)
rgb=(0.12477953,0.64046069,0.52706792)
rgb=(0.12632581,0.64410744,0.52531069)
rgb=(0.12808703,0.64774881,0.52349092)
rgb=(0.13006688,0.65138436,0.52160791)
rgb=(0.13226797,0.65501363,0.51966086)
rgb=(0.13469183,0.65863619,0.5176488) 
rgb=(0.13733921,0.66225157,0.51557101)
rgb=(0.14020991,0.66585927,0.5134268) 
rgb=(0.14330291,0.66945881,0.51121549)
rgb=(0.1466164,0.67304968,0.50893644)
rgb=(0.15014782,0.67663139,0.5065889) 
rgb=(0.15389405,0.68020343,0.50417217)
rgb=(0.15785146,0.68376525,0.50168574)
rgb=(0.16201598,0.68731632,0.49912906)
rgb=(0.1663832,0.69085611,0.49650163)
rgb=(0.1709484,0.69438405,0.49380294)
rgb=(0.17570671,0.6978996,0.49103252)
rgb=(0.18065314,0.70140222,0.48818938)
rgb=(0.18578266,0.70489133,0.48527326)
rgb=(0.19109018,0.70836635,0.48228395)
rgb=(0.19657063,0.71182668,0.47922108)
rgb=(0.20221902,0.71527175,0.47608431)
rgb=(0.20803045,0.71870095,0.4728733) 
rgb=(0.21400015,0.72211371,0.46958774)
rgb=(0.22012381,0.72550945,0.46622638)
rgb=(0.2263969,0.72888753,0.46278934)
rgb=(0.23281498,0.73224735,0.45927675)
rgb=(0.2393739,0.73558828,0.45568838)
rgb=(0.24606968,0.73890972,0.45202405)
rgb=(0.25289851,0.74221104,0.44828355)
rgb=(0.25985676,0.74549162,0.44446673)
rgb=(0.26694127,0.74875084,0.44057284)
rgb=(0.27414922,0.75198807,0.4366009) 
rgb=(0.28147681,0.75520266,0.43255207)
rgb=(0.28892102,0.75839399,0.42842626)
rgb=(0.29647899,0.76156142,0.42422341)
rgb=(0.30414796,0.76470433,0.41994346)
rgb=(0.31192534,0.76782207,0.41558638)
rgb=(0.3198086,0.77091403,0.41115215)
rgb=(0.3277958,0.77397953,0.40664011)
rgb=(0.33588539,0.7770179,0.40204917)
rgb=(0.34407411,0.78002855,0.39738103)
rgb=(0.35235985,0.78301086,0.39263579)
rgb=(0.36074053,0.78596419,0.38781353)
rgb=(0.3692142,0.78888793,0.38291438)
rgb=(0.37777892,0.79178146,0.3779385) 
rgb=(0.38643282,0.79464415,0.37288606)
rgb=(0.39517408,0.79747541,0.36775726)
rgb=(0.40400101,0.80027461,0.36255223)
rgb=(0.4129135,0.80304099,0.35726893)
rgb=(0.42190813,0.80577412,0.35191009)
rgb=(0.43098317,0.80847343,0.34647607)
rgb=(0.44013691,0.81113836,0.3409673) 
rgb=(0.44936763,0.81376835,0.33538426)
rgb=(0.45867362,0.81636288,0.32972749)
rgb=(0.46805314,0.81892143,0.32399761)
rgb=(0.47750446,0.82144351,0.31819529)
rgb=(0.4870258,0.82392862,0.31232133)
rgb=(0.49661536,0.82637633,0.30637661)
rgb=(0.5062713,0.82878621,0.30036211)
rgb=(0.51599182,0.83115784,0.29427888)
rgb=(0.52577622,0.83349064,0.2881265) 
rgb=(0.5356211,0.83578452,0.28190832)
rgb=(0.5455244,0.83803918,0.27562602)
rgb=(0.55548397,0.84025437,0.26928147)
rgb=(0.5654976,0.8424299,0.26287683)
rgb=(0.57556297,0.84456561,0.25641457)
rgb=(0.58567772,0.84666139,0.24989748)
rgb=(0.59583934,0.84871722,0.24332878)
rgb=(0.60604528,0.8507331,0.23671214)
rgb=(0.61629283,0.85270912,0.23005179)
rgb=(0.62657923,0.85464543,0.22335258)
rgb=(0.63690157,0.85654226,0.21662012)
rgb=(0.64725685,0.85839991,0.20986086)
rgb=(0.65764197,0.86021878,0.20308229)
rgb=(0.66805369,0.86199932,0.19629307)
rgb=(0.67848868,0.86374211,0.18950326)
rgb=(0.68894351,0.86544779,0.18272455)
rgb=(0.69941463,0.86711711,0.17597055)
rgb=(0.70989842,0.86875092,0.16925712)
rgb=(0.72039115,0.87035015,0.16260273)
rgb=(0.73088902,0.87191584,0.15602894)
rgb=(0.74138803,0.87344918,0.14956101)
rgb=(0.75188414,0.87495143,0.14322828)
rgb=(0.76237342,0.87642392,0.13706449)
rgb=(0.77285183,0.87786808,0.13110864)
rgb=(0.78331535,0.87928545,0.12540538)
rgb=(0.79375994,0.88067763,0.12000532)
rgb=(0.80418159,0.88204632,0.11496505)
rgb=(0.81457634,0.88339329,0.11034678)
rgb=(0.82494028,0.88472036,0.10621724)
rgb=(0.83526959,0.88602943,0.1026459) 
rgb=(0.84556056,0.88732243,0.09970219)
rgb=(0.8558096,0.88860134,0.09745186)
rgb=(0.86601325,0.88986815,0.09595277)
rgb=(0.87616824,0.89112487,0.09525046)
rgb=(0.88627146,0.89237353,0.09537439)
rgb=(0.89632002,0.89361614,0.09633538)
rgb=(0.90631121,0.89485467,0.09812496)
rgb=(0.91624212,0.89609127,0.1007168) 
rgb=(0.92610579,0.89732977,0.10407067)
rgb=(0.93590444,0.8985704,0.10813094)
rgb=(0.94563626,0.899815,0.11283773)
rgb=(0.95529972,0.90106534,0.11812832)
rgb=(0.96489353,0.90232311,0.12394051)
rgb=(0.97441665,0.90358991,0.13021494)
rgb=(0.98386829,0.90486726,0.13689671)
rgb=(0.99324789,0.90615657,0.1439362)
}}
  • 1
    Matlab uses parula now but still please don't use jet, Jump to viridis ;) --> tex.stackexchange.com/a/254518/3235 – percusse Aug 8 '15 at 8:46
  • @percusse The Matlab code provided by original picture is colormap = jet;... – Paul Gaborit Aug 8 '15 at 16:25
  • Yes but we don't have to replicate their mistakes anyways. – percusse Aug 9 '15 at 8:13
  • @percusse Why is it a mistake? – Paul Gaborit Aug 9 '15 at 8:14
  • See the video link in the linked answer. – percusse Aug 9 '15 at 14:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.