我正在尝试在 TikZ 和 pgfplots 中复制 Rosenbrock 函数的以下版本:https://commons.wikimedia.org/wiki/File:Rosenbrock_function.svg
这是我的 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}
到目前为止,我无法获得相同的高对比度图像。作者最初在 Matlab 中使用了一种数学技巧来增强感兴趣区域(接近全局最优值)的对比度,而我无法使用 TikZ/pgfplots 复制。
有任何想法吗?
答案1
您可以使用:
colormap/jet
获得与 Matlab 相同的颜色图,point meta=ln(z+1)
z
在这个色彩图中使用对数插值。draw=white,line width=.1pt
用细白线绘制网格。
结果:
代码:
\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}
编辑
根据评论的要求,具有颜色图的相同表面viridis
:
colormap的定义viridis
:
\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)
}}