Mathematica Asked by DPF on April 10, 2021
There are already good approaches for “better than standard” colormaps in Mathematica, which are optimized for a more linear perception between the visible colors and their underlying values, here in StackExchange: Is there an easy way to use Matteo Niccoli's perceptual color maps for 2D plots in Mathematica?
Nevertheless, those considerations can go even further into thinking of colormaps that also include linear perception for persons impaired by deuteranopia or protanopia. Also the grayscale-printing can be optimized.
Have a look at this page.
Far down in the article, there are some hints to generate those maps using Python. How can those maps be generated and used in Mathematica? I am particularly interested in “Option D (Viridis)”.
On the article’s website, I found a Python script including a variable cm_data
, which contains apparently RGB values (scaled from 0.0 to 1.0) in a structure like: [[R1,G1,B1],...,[Rn,Bn,Gn]]
. I’m not familiar with parsing such a string into a useful List
in Mathematica.
Didn't see george's answer when I worked this out, but I'll go ahead and post since it has all the maps from that page. The StringReplace
here is pretty embarrassing, but I was going for quick and dirty
ClearAll@MPLColorMap
Set[
Evaluate[
MPLColorMap /@
{"Magma", "Inferno", "Plasma", "Viridis",
"EricsRdBuGnYl", "EricsRdBuGnYl2", "EricsPuBuGnYl", "FakeParula",
"JoesBluGrnPnk2"}
],
Function[url,
ReadList[url, "String"][[
Span[#1, #2 - 1] & @@ (Flatten@Position[
StringPosition[test, "cm_data", IgnoreCase -> True],
Except@{}, 1, Heads -> False])]] //
StringReplace[
{"[[" -> "{", "]]" -> "}", "]," -> "}", "[" -> "{", "]" -> "}",
"cm_data = " -> "", "e" -> "*^"}
] // Map@RGBColor@*ToExpression //
Function[x, Blend[#, x]] &] /@ {
"https://raw.githubusercontent.com/BIDS/colormap/master/option_a.py",
"https://raw.githubusercontent.com/BIDS/colormap/master/option_b.py",
"https://raw.githubusercontent.com/BIDS/colormap/master/option_c.py",
"https://raw.githubusercontent.com/BIDS/colormap/master/option_d.py",
"https://github.com/BIDS/colormap/raw/master/erics-RdBuGnYl_r.py",
"https://github.com/BIDS/colormap/raw/master/erics-RdBuGnYl_r_v2.py",
"https://github.com/BIDS/colormap/raw/master/erics_PuBuGnYl_r.py",
"https://github.com/BIDS/colormap/raw/master/fake_parula.py",
"https://github.com/BIDS/colormap/raw/master/joes-blu_grn_pnk2.py"}
]
You can skip that code above and just import the data using
ClearAll[MPLColorMap]
<< "http://pastebin.com/raw/pFsb4ZBS";
Which defines all the color maps as downvalues of MPLColorMap
. You can now access the color maps like
MPLColorMap["Magma"][.8]
and use them via
DensityPlot[Sin[x - y], {x, -3, 3}, {y, -3, 3},
ColorFunction -> MPLColorMap["Viridis"]]
Here are all the new color maps shown using the showcolorfunction
defined here,
showcolorfunction[MPLColorMap[#]] & /@ {"Magma", "Inferno", "Plasma",
"Viridis", "EricsRdBuGnYl", "EricsRdBuGnYl2", "EricsPuBuGnYl",
"FakeParula", "JoesBluGrnPnk2"}
Correct answer by Jason B. on April 10, 2021
Thanks to @yarchik, I made it work for Mathematica, by simply replacing [
and ]
with {
and }
using a text editor:
viridis=Module[{colorlist},
colorlist={{0.26700401,0.00487433,0.32941519},{0.26851048,0.00960483,0.33542652},{0.26994384,0.01462494,0.34137895},{0.27130489,0.01994186,0.34726862},{0.27259384,0.02556309,0.35309303},{0.27380934,0.03149748,0.35885256},{0.27495242,0.03775181,0.36454323},{0.27602238,0.04416723,0.37016418},{0.2770184,0.05034437,0.37571452},{0.27794143,0.05632444,0.38119074},{0.27879067,0.06214536,0.38659204},{0.2795655,0.06783587,0.39191723},{0.28026658,0.07341724,0.39716349},{0.28089358,0.07890703,0.40232944},{0.28144581,0.0843197,0.40741404},{0.28192358,0.08966622,0.41241521},{0.28232739,0.09495545,0.41733086},{0.28265633,0.10019576,0.42216032},{0.28291049,0.10539345,0.42690202},{0.28309095,0.11055307,0.43155375},{0.28319704,0.11567966,0.43611482},{0.28322882,0.12077701,0.44058404},{0.28318684,0.12584799,0.44496},{0.283072,0.13089477,0.44924127},{0.28288389,0.13592005,0.45342734},{0.28262297,0.14092556,0.45751726},{0.28229037,0.14591233,0.46150995},{0.28188676,0.15088147,0.46540474},{0.28141228,0.15583425,0.46920128},{0.28086773,0.16077132,0.47289909},{0.28025468,0.16569272,0.47649762},{0.27957399,0.17059884,0.47999675},{0.27882618,0.1754902,0.48339654},{0.27801236,0.18036684,0.48669702},{0.27713437,0.18522836,0.48989831},{0.27619376,0.19007447,0.49300074},{0.27519116,0.1949054,0.49600488},{0.27412802,0.19972086,0.49891131},{0.27300596,0.20452049,0.50172076},{0.27182812,0.20930306,0.50443413},{0.27059473,0.21406899,0.50705243},{0.26930756,0.21881782,0.50957678},{0.26796846,0.22354911,0.5120084},{0.26657984,0.2282621,0.5143487},{0.2651445,0.23295593,0.5165993},{0.2636632,0.23763078,0.51876163},{0.26213801,0.24228619,0.52083736},{0.26057103,0.2469217,0.52282822},{0.25896451,0.25153685,0.52473609},{0.25732244,0.2561304,0.52656332},{0.25564519,0.26070284,0.52831152},{0.25393498,0.26525384,0.52998273},{0.25219404,0.26978306,0.53157905},{0.25042462,0.27429024,0.53310261},{0.24862899,0.27877509,0.53455561},{0.2468114,0.28323662,0.53594093},{0.24497208,0.28767547,0.53726018},{0.24311324,0.29209154,0.53851561},{0.24123708,0.29648471,0.53970946},{0.23934575,0.30085494,0.54084398},{0.23744138,0.30520222,0.5419214},{0.23552606,0.30952657,0.54294396},{0.23360277,0.31382773,0.54391424},{0.2316735,0.3181058,0.54483444},{0.22973926,0.32236127,0.54570633},{0.22780192,0.32659432,0.546532},{0.2258633,0.33080515,0.54731353},{0.22392515,0.334994,0.54805291},{0.22198915,0.33916114,0.54875211},{0.22005691,0.34330688,0.54941304},{0.21812995,0.34743154,0.55003755},{0.21620971,0.35153548,0.55062743},{0.21429757,0.35561907,0.5511844},{0.21239477,0.35968273,0.55171011},{0.2105031,0.36372671,0.55220646},{0.20862342,0.36775151,0.55267486},{0.20675628,0.37175775,0.55311653},{0.20490257,0.37574589,0.55353282},{0.20306309,0.37971644,0.55392505},{0.20123854,0.38366989,0.55429441},{0.1994295,0.38760678,0.55464205},{0.1976365,0.39152762,0.55496905},{0.19585993,0.39543297,0.55527637},{0.19410009,0.39932336,0.55556494},{0.19235719,0.40319934,0.55583559},{0.19063135,0.40706148,0.55608907},{0.18892259,0.41091033,0.55632606},{0.18723083,0.41474645,0.55654717},{0.18555593,0.4185704,0.55675292},{0.18389763,0.42238275,0.55694377},{0.18225561,0.42618405,0.5571201},{0.18062949,0.42997486,0.55728221},{0.17901879,0.43375572,0.55743035},{0.17742298,0.4375272,0.55756466},{0.17584148,0.44128981,0.55768526},{0.17427363,0.4450441,0.55779216},{0.17271876,0.4487906,0.55788532},{0.17117615,0.4525298,0.55796464},{0.16964573,0.45626209,0.55803034},{0.16812641,0.45998802,0.55808199},{0.1666171,0.46370813,0.55811913},{0.16511703,0.4674229,0.55814141},{0.16362543,0.47113278,0.55814842},{0.16214155,0.47483821,0.55813967},{0.16066467,0.47853961,0.55811466},{0.15919413,0.4822374,0.5580728},{0.15772933,0.48593197,0.55801347},{0.15626973,0.4896237,0.557936},{0.15481488,0.49331293,0.55783967},{0.15336445,0.49700003,0.55772371},{0.1519182,0.50068529,0.55758733},{0.15047605,0.50436904,0.55742968},{0.14903918,0.50805136,0.5572505},{0.14760731,0.51173263,0.55704861},{0.14618026,0.51541316,0.55682271},{0.14475863,0.51909319,0.55657181},{0.14334327,0.52277292,0.55629491},{0.14193527,0.52645254,0.55599097},{0.14053599,0.53013219,0.55565893},{0.13914708,0.53381201,0.55529773},{0.13777048,0.53749213,0.55490625},{0.1364085,0.54117264,0.55448339},{0.13506561,0.54485335,0.55402906},{0.13374299,0.54853458,0.55354108},{0.13244401,0.55221637,0.55301828},{0.13117249,0.55589872,0.55245948},{0.1299327,0.55958162,0.55186354},{0.12872938,0.56326503,0.55122927},{0.12756771,0.56694891,0.55055551},{0.12645338,0.57063316,0.5498411},{0.12539383,0.57431754,0.54908564},{0.12439474,0.57800205,0.5482874},{0.12346281,0.58168661,0.54744498},{0.12260562,0.58537105,0.54655722},{0.12183122,0.58905521,0.54562298},{0.12114807,0.59273889,0.54464114},{0.12056501,0.59642187,0.54361058},{0.12009154,0.60010387,0.54253043},{0.11973756,0.60378459,0.54139999},{0.11951163,0.60746388,0.54021751},{0.11942341,0.61114146,0.53898192},{0.11948255,0.61481702,0.53769219},{0.11969858,0.61849025,0.53634733},{0.12008079,0.62216081,0.53494633},{0.12063824,0.62582833,0.53348834},{0.12137972,0.62949242,0.53197275},{0.12231244,0.63315277,0.53039808},{0.12344358,0.63680899,0.52876343},{0.12477953,0.64046069,0.52706792},{0.12632581,0.64410744,0.52531069},{0.12808703,0.64774881,0.52349092},{0.13006688,0.65138436,0.52160791},{0.13226797,0.65501363,0.51966086},{0.13469183,0.65863619,0.5176488},{0.13733921,0.66225157,0.51557101},{0.14020991,0.66585927,0.5134268},{0.14330291,0.66945881,0.51121549},{0.1466164,0.67304968,0.50893644},{0.15014782,0.67663139,0.5065889},{0.15389405,0.68020343,0.50417217},{0.15785146,0.68376525,0.50168574},{0.16201598,0.68731632,0.49912906},{0.1663832,0.69085611,0.49650163},{0.1709484,0.69438405,0.49380294},{0.17570671,0.6978996,0.49103252},{0.18065314,0.70140222,0.48818938},{0.18578266,0.70489133,0.48527326},{0.19109018,0.70836635,0.48228395},{0.19657063,0.71182668,0.47922108},{0.20221902,0.71527175,0.47608431},{0.20803045,0.71870095,0.4728733},{0.21400015,0.72211371,0.46958774},{0.22012381,0.72550945,0.46622638},{0.2263969,0.72888753,0.46278934},{0.23281498,0.73224735,0.45927675},{0.2393739,0.73558828,0.45568838},{0.24606968,0.73890972,0.45202405},{0.25289851,0.74221104,0.44828355},{0.25985676,0.74549162,0.44446673},{0.26694127,0.74875084,0.44057284},{0.27414922,0.75198807,0.4366009},{0.28147681,0.75520266,0.43255207},{0.28892102,0.75839399,0.42842626},{0.29647899,0.76156142,0.42422341},{0.30414796,0.76470433,0.41994346},{0.31192534,0.76782207,0.41558638},{0.3198086,0.77091403,0.41115215},{0.3277958,0.77397953,0.40664011},{0.33588539,0.7770179,0.40204917},{0.34407411,0.78002855,0.39738103},{0.35235985,0.78301086,0.39263579},{0.36074053,0.78596419,0.38781353},{0.3692142,0.78888793,0.38291438},{0.37777892,0.79178146,0.3779385},{0.38643282,0.79464415,0.37288606},{0.39517408,0.79747541,0.36775726},{0.40400101,0.80027461,0.36255223},{0.4129135,0.80304099,0.35726893},{0.42190813,0.80577412,0.35191009},{0.43098317,0.80847343,0.34647607},{0.44013691,0.81113836,0.3409673},{0.44936763,0.81376835,0.33538426},{0.45867362,0.81636288,0.32972749},{0.46805314,0.81892143,0.32399761},{0.47750446,0.82144351,0.31819529},{0.4870258,0.82392862,0.31232133},{0.49661536,0.82637633,0.30637661},{0.5062713,0.82878621,0.30036211},{0.51599182,0.83115784,0.29427888},{0.52577622,0.83349064,0.2881265},{0.5356211,0.83578452,0.28190832},{0.5455244,0.83803918,0.27562602},{0.55548397,0.84025437,0.26928147},{0.5654976,0.8424299,0.26287683},{0.57556297,0.84456561,0.25641457},{0.58567772,0.84666139,0.24989748},{0.59583934,0.84871722,0.24332878},{0.60604528,0.8507331,0.23671214},{0.61629283,0.85270912,0.23005179},{0.62657923,0.85464543,0.22335258},{0.63690157,0.85654226,0.21662012},{0.64725685,0.85839991,0.20986086},{0.65764197,0.86021878,0.20308229},{0.66805369,0.86199932,0.19629307},{0.67848868,0.86374211,0.18950326},{0.68894351,0.86544779,0.18272455},{0.69941463,0.86711711,0.17597055},{0.70989842,0.86875092,0.16925712},{0.72039115,0.87035015,0.16260273},{0.73088902,0.87191584,0.15602894},{0.74138803,0.87344918,0.14956101},{0.75188414,0.87495143,0.14322828},{0.76237342,0.87642392,0.13706449},{0.77285183,0.87786808,0.13110864},{0.78331535,0.87928545,0.12540538},{0.79375994,0.88067763,0.12000532},{0.80418159,0.88204632,0.11496505},{0.81457634,0.88339329,0.11034678},{0.82494028,0.88472036,0.10621724},{0.83526959,0.88602943,0.1026459},{0.84556056,0.88732243,0.09970219},{0.8558096,0.88860134,0.09745186},{0.86601325,0.88986815,0.09595277},{0.87616824,0.89112487,0.09525046},{0.88627146,0.89237353,0.09537439},{0.89632002,0.89361614,0.09633538},{0.90631121,0.89485467,0.09812496},{0.91624212,0.89609127,0.1007168},{0.92610579,0.89732977,0.10407067},{0.93590444,0.8985704,0.10813094},{0.94563626,0.899815,0.11283773},{0.95529972,0.90106534,0.11812832},{0.96489353,0.90232311,0.12394051},{0.97441665,0.90358991,0.13021494},{0.98386829,0.90486726,0.13689671},{0.99324789,0.90615657,0.1439362}};
Evaluate[Blend[RGBColor @@@ colorlist, #] &]
];
BarLegend[{viridis, {0, 1}}]
Another Example to visualize the grayscale-improvement ("Rainbow" vs. viridis):
mPlots = ContourPlot[Cos[x] Sin[y], {x, -10, 10}, {y, -10, 10}, PlotRange -> All, ColorFunction -> #, PlotPoints -> 75, ImageSize -> Medium] & /@
{"Rainbow", viridis}
mPlots /. x: _RGBColor | _Hue | _CMYKColor :> ColorConvert[x, "Grayscale"]
Answered by DPF on April 10, 2021
we should not need to manually fix the format.. cut-paste from https://github.com/BIDS/colormap/blob/master/option_b.py
pyarray = " [[ 1.46159096e-03, 4.66127766e-04, 1.38655200e-02],
[ 2.26726368e-03, 1.26992553e-03, 1.85703520e-02],
[ 3.29899092e-03, 2.24934863e-03, 2.42390508e-02],
[ 4.54690615e-03, 3.39180156e-03, 3.09092475e-02],
[ 6.00552565e-03, 4.69194561e-03, 3.85578980e-02],
[ 7.67578856e-03, 6.13611626e-03, 4.68360336e-02],
[ 9.56051094e-03, 7.71344131e-03, 5.51430756e-02],
[ 1.16634769e-02, 9.41675403e-03, 6.34598080e-02],
[ 1.39950388e-02, 1.12247138e-02, 7.18616890e-02],
[ 1.65605595e-02, 1.31362262e-02, 8.02817951e-02],
[ 1.93732295e-02, 1.51325789e-02, 8.87668094e-02],
[ 2.24468865e-02, 1.71991484e-02, 9.73274383e-02],
[ 2.57927373e-02, 1.93306298e-02, 1.05929835e-01],
[ 2.94324251e-02, 2.15030771e-02, 1.14621328e-01],
[ 3.33852235e-02, 2.37024271e-02, 1.23397286e-01],
[ 3.76684211e-02, 2.59207864e-02, 1.32232108e-01],
[ 4.22525554e-02, 2.81385015e-02, 1.41140519e-01],
[ 4.69146287e-02, 3.03236129e-02, 1.50163867e-01],
[ 5.16437624e-02, 3.24736172e-02, 1.59254277e-01],
[ 5.64491009e-02, 3.45691867e-02, 1.68413539e-01],
[ 6.13397200e-02, 3.65900213e-02, 1.77642172e-01],
[ 6.63312620e-02, 3.85036268e-02, 1.86961588e-01],
[ 7.14289181e-02, 4.02939095e-02, 1.96353558e-01],
[ 7.66367560e-02, 4.19053329e-02, 2.05798788e-01],
[ 8.19620773e-02, 4.33278666e-02, 2.15289113e-01],
[ 8.74113897e-02, 4.45561662e-02, 2.24813479e-01],
[ 9.29901526e-02, 4.55829503e-02, 2.34357604e-01],
[ 9.87024972e-02, 4.64018731e-02, 2.43903700e-01],
[ 1.04550936e-01, 4.70080541e-02, 2.53430300e-01],
[ 1.10536084e-01, 4.73986708e-02, 2.62912235e-01],
[ 1.16656423e-01, 4.75735920e-02, 2.72320803e-01],
[ 1.22908126e-01, 4.75360183e-02, 2.81624170e-01],
[ 1.29284984e-01, 4.72930838e-02, 2.90788012e-01],
[ 1.35778450e-01, 4.68563678e-02, 2.99776404e-01],
[ 1.42377819e-01, 4.62422566e-02, 3.08552910e-01],
[ 1.49072957e-01, 4.54676444e-02, 3.17085139e-01],
[ 1.55849711e-01, 4.45588056e-02, 3.25338414e-01],
[ 1.62688939e-01, 4.35542881e-02, 3.33276678e-01],
[ 1.69575148e-01, 4.24893149e-02, 3.40874188e-01],
[ 1.76493202e-01, 4.14017089e-02, 3.48110606e-01],
[ 1.83428775e-01, 4.03288858e-02, 3.54971391e-01],
[ 1.90367453e-01, 3.93088888e-02, 3.61446945e-01],
[ 1.97297425e-01, 3.84001825e-02, 3.67534629e-01],
[ 2.04209298e-01, 3.76322609e-02, 3.73237557e-01],
[ 2.11095463e-01, 3.70296488e-02, 3.78563264e-01],
[ 2.17948648e-01, 3.66146049e-02, 3.83522415e-01],
[ 2.24762908e-01, 3.64049901e-02, 3.88128944e-01],
[ 2.31538148e-01, 3.64052511e-02, 3.92400150e-01],
[ 2.38272961e-01, 3.66209949e-02, 3.96353388e-01],
[ 2.44966911e-01, 3.70545017e-02, 4.00006615e-01],
[ 2.51620354e-01, 3.77052832e-02, 4.03377897e-01],
[ 2.58234265e-01, 3.85706153e-02, 4.06485031e-01],
[ 2.64809649e-01, 3.96468666e-02, 4.09345373e-01],
[ 2.71346664e-01, 4.09215821e-02, 4.11976086e-01],
[ 2.77849829e-01, 4.23528741e-02, 4.14392106e-01],
[ 2.84321318e-01, 4.39325787e-02, 4.16607861e-01],
[ 2.90763373e-01, 4.56437598e-02, 4.18636756e-01],
[ 2.97178251e-01, 4.74700293e-02, 4.20491164e-01],
[ 3.03568182e-01, 4.93958927e-02, 4.22182449e-01],
[ 3.09935342e-01, 5.14069729e-02, 4.23720999e-01],
[ 3.16281835e-01, 5.34901321e-02, 4.25116277e-01],
[ 3.22609671e-01, 5.56335178e-02, 4.26376869e-01],
[ 3.28920763e-01, 5.78265505e-02, 4.27510546e-01],
[ 3.35216916e-01, 6.00598734e-02, 4.28524320e-01],
[ 3.41499828e-01, 6.23252772e-02, 4.29424503e-01],
[ 3.47771086e-01, 6.46156100e-02, 4.30216765e-01],
[ 3.54032169e-01, 6.69246832e-02, 4.30906186e-01],
[ 3.60284449e-01, 6.92471753e-02, 4.31497309e-01],
[ 3.66529195e-01, 7.15785403e-02, 4.31994185e-01],
[ 3.72767575e-01, 7.39149211e-02, 4.32400419e-01],
[ 3.79000659e-01, 7.62530701e-02, 4.32719214e-01],
[ 3.85228383e-01, 7.85914864e-02, 4.32954973e-01],
[ 3.91452659e-01, 8.09267058e-02, 4.33108763e-01],
[ 3.97674379e-01, 8.32568129e-02, 4.33182647e-01],
[ 4.03894278e-01, 8.55803445e-02, 4.33178526e-01],
[ 4.10113015e-01, 8.78961593e-02, 4.33098056e-01],
[ 4.16331169e-01, 9.02033992e-02, 4.32942678e-01],
[ 4.22549249e-01, 9.25014543e-02, 4.32713635e-01],
[ 4.28767696e-01, 9.47899342e-02, 4.32411996e-01],
[ 4.34986885e-01, 9.70686417e-02, 4.32038673e-01],
[ 4.41207124e-01, 9.93375510e-02, 4.31594438e-01],
[ 4.47428382e-01, 1.01597079e-01, 4.31080497e-01],
[ 4.53650614e-01, 1.03847716e-01, 4.30497898e-01],
[ 4.59874623e-01, 1.06089165e-01, 4.29845789e-01],
[ 4.66100494e-01, 1.08321923e-01, 4.29124507e-01],
[ 4.72328255e-01, 1.10546584e-01, 4.28334320e-01],
[ 4.78557889e-01, 1.12763831e-01, 4.27475431e-01],
[ 4.84789325e-01, 1.14974430e-01, 4.26547991e-01],
[ 4.91022448e-01, 1.17179219e-01, 4.25552106e-01],
[ 4.97257069e-01, 1.19379132e-01, 4.24487908e-01],
[ 5.03492698e-01, 1.21575414e-01, 4.23356110e-01],
[ 5.09729541e-01, 1.23768654e-01, 4.22155676e-01],
[ 5.15967304e-01, 1.25959947e-01, 4.20886594e-01],
[ 5.22205646e-01, 1.28150439e-01, 4.19548848e-01],
[ 5.28444192e-01, 1.30341324e-01, 4.18142411e-01],
[ 5.34682523e-01, 1.32533845e-01, 4.16667258e-01],
[ 5.40920186e-01, 1.34729286e-01, 4.15123366e-01],
[ 5.47156706e-01, 1.36928959e-01, 4.13510662e-01],
[ 5.53391649e-01, 1.39134147e-01, 4.11828882e-01],
[ 5.59624442e-01, 1.41346265e-01, 4.10078028e-01],
[ 5.65854477e-01, 1.43566769e-01, 4.08258132e-01],
[ 5.72081108e-01, 1.45797150e-01, 4.06369246e-01],
[ 5.78303656e-01, 1.48038934e-01, 4.04411444e-01],
[ 5.84521407e-01, 1.50293679e-01, 4.02384829e-01],
[ 5.90733615e-01, 1.52562977e-01, 4.00289528e-01],
[ 5.96939751e-01, 1.54848232e-01, 3.98124897e-01],
[ 6.03138930e-01, 1.57151161e-01, 3.95891308e-01],
[ 6.09330184e-01, 1.59473549e-01, 3.93589349e-01],
[ 6.15512627e-01, 1.61817111e-01, 3.91219295e-01],
[ 6.21685340e-01, 1.64183582e-01, 3.88781456e-01],
[ 6.27847374e-01, 1.66574724e-01, 3.86276180e-01],
[ 6.33997746e-01, 1.68992314e-01, 3.83703854e-01],
[ 6.40135447e-01, 1.71438150e-01, 3.81064906e-01],
[ 6.46259648e-01, 1.73913876e-01, 3.78358969e-01],
[ 6.52369348e-01, 1.76421271e-01, 3.75586209e-01],
[ 6.58463166e-01, 1.78962399e-01, 3.72748214e-01],
[ 6.64539964e-01, 1.81539111e-01, 3.69845599e-01],
[ 6.70598572e-01, 1.84153268e-01, 3.66879025e-01],
[ 6.76637795e-01, 1.86806728e-01, 3.63849195e-01],
[ 6.82656407e-01, 1.89501352e-01, 3.60756856e-01],
[ 6.88653158e-01, 1.92238994e-01, 3.57602797e-01],
[ 6.94626769e-01, 1.95021500e-01, 3.54387853e-01],
[ 7.00575937e-01, 1.97850703e-01, 3.51112900e-01],
[ 7.06499709e-01, 2.00728196e-01, 3.47776863e-01],
[ 7.12396345e-01, 2.03656029e-01, 3.44382594e-01],
[ 7.18264447e-01, 2.06635993e-01, 3.40931208e-01],
[ 7.24102613e-01, 2.09669834e-01, 3.37423766e-01],
[ 7.29909422e-01, 2.12759270e-01, 3.33861367e-01],
[ 7.35683432e-01, 2.15905976e-01, 3.30245147e-01],
[ 7.41423185e-01, 2.19111589e-01, 3.26576275e-01],
[ 7.47127207e-01, 2.22377697e-01, 3.22855952e-01],
[ 7.52794009e-01, 2.25705837e-01, 3.19085410e-01],
[ 7.58422090e-01, 2.29097492e-01, 3.15265910e-01],
[ 7.64009940e-01, 2.32554083e-01, 3.11398734e-01],
[ 7.69556038e-01, 2.36076967e-01, 3.07485188e-01],
[ 7.75058888e-01, 2.39667435e-01, 3.03526312e-01],
[ 7.80517023e-01, 2.43326720e-01, 2.99522665e-01],
[ 7.85928794e-01, 2.47055968e-01, 2.95476756e-01],
[ 7.91292674e-01, 2.50856232e-01, 2.91389943e-01],
[ 7.96607144e-01, 2.54728485e-01, 2.87263585e-01],
[ 8.01870689e-01, 2.58673610e-01, 2.83099033e-01],
[ 8.07081807e-01, 2.62692401e-01, 2.78897629e-01],
[ 8.12239008e-01, 2.66785558e-01, 2.74660698e-01],
[ 8.17340818e-01, 2.70953688e-01, 2.70389545e-01],
[ 8.22385784e-01, 2.75197300e-01, 2.66085445e-01],
[ 8.27372474e-01, 2.79516805e-01, 2.61749643e-01],
[ 8.32299481e-01, 2.83912516e-01, 2.57383341e-01],
[ 8.37165425e-01, 2.88384647e-01, 2.52987700e-01],
[ 8.41968959e-01, 2.92933312e-01, 2.48563825e-01],
[ 8.46708768e-01, 2.97558528e-01, 2.44112767e-01],
[ 8.51383572e-01, 3.02260213e-01, 2.39635512e-01],
[ 8.55992130e-01, 3.07038188e-01, 2.35132978e-01],
[ 8.60533241e-01, 3.11892183e-01, 2.30606009e-01],
[ 8.65005747e-01, 3.16821833e-01, 2.26055368e-01],
[ 8.69408534e-01, 3.21826685e-01, 2.21481734e-01],
[ 8.73740530e-01, 3.26906201e-01, 2.16885699e-01],
[ 8.78000715e-01, 3.32059760e-01, 2.12267762e-01],
[ 8.82188112e-01, 3.37286663e-01, 2.07628326e-01],
[ 8.86301795e-01, 3.42586137e-01, 2.02967696e-01],
[ 8.90340885e-01, 3.47957340e-01, 1.98286080e-01],
[ 8.94304553e-01, 3.53399363e-01, 1.93583583e-01],
[ 8.98192017e-01, 3.58911240e-01, 1.88860212e-01],
[ 9.02002544e-01, 3.64491949e-01, 1.84115876e-01],
[ 9.05735448e-01, 3.70140419e-01, 1.79350388e-01],
[ 9.09390090e-01, 3.75855533e-01, 1.74563472e-01],
[ 9.12965874e-01, 3.81636138e-01, 1.69754764e-01],
[ 9.16462251e-01, 3.87481044e-01, 1.64923826e-01],
[ 9.19878710e-01, 3.93389034e-01, 1.60070152e-01],
[ 9.23214783e-01, 3.99358867e-01, 1.55193185e-01],
[ 9.26470039e-01, 4.05389282e-01, 1.50292329e-01],
[ 9.29644083e-01, 4.11479007e-01, 1.45366973e-01],
[ 9.32736555e-01, 4.17626756e-01, 1.40416519e-01],
[ 9.35747126e-01, 4.23831237e-01, 1.35440416e-01],
[ 9.38675494e-01, 4.30091162e-01, 1.30438175e-01],
[ 9.41521384e-01, 4.36405243e-01, 1.25409440e-01],
[ 9.44284543e-01, 4.42772199e-01, 1.20354038e-01],
[ 9.46964741e-01, 4.49190757e-01, 1.15272059e-01],
[ 9.49561766e-01, 4.55659658e-01, 1.10163947e-01],
[ 9.52075421e-01, 4.62177656e-01, 1.05030614e-01],
[ 9.54505523e-01, 4.68743522e-01, 9.98735931e-02],
[ 9.56851903e-01, 4.75356048e-01, 9.46952268e-02],
[ 9.59114397e-01, 4.82014044e-01, 8.94989073e-02],
[ 9.61292850e-01, 4.88716345e-01, 8.42893891e-02],
[ 9.63387110e-01, 4.95461806e-01, 7.90731907e-02],
[ 9.65397031e-01, 5.02249309e-01, 7.38591143e-02],
[ 9.67322465e-01, 5.09077761e-01, 6.86589199e-02],
[ 9.69163264e-01, 5.15946092e-01, 6.34881971e-02],
[ 9.70919277e-01, 5.22853259e-01, 5.83674890e-02],
[ 9.72590351e-01, 5.29798246e-01, 5.33237243e-02],
[ 9.74176327e-01, 5.36780059e-01, 4.83920090e-02],
[ 9.75677038e-01, 5.43797733e-01, 4.36177922e-02],
[ 9.77092313e-01, 5.50850323e-01, 3.90500131e-02],
[ 9.78421971e-01, 5.57936911e-01, 3.49306227e-02],
[ 9.79665824e-01, 5.65056600e-01, 3.14091591e-02],
[ 9.80823673e-01, 5.72208516e-01, 2.85075931e-02],
[ 9.81895311e-01, 5.79391803e-01, 2.62497353e-02],
[ 9.82880522e-01, 5.86605627e-01, 2.46613416e-02],
[ 9.83779081e-01, 5.93849168e-01, 2.37702263e-02],
[ 9.84590755e-01, 6.01121626e-01, 2.36063833e-02],
[ 9.85315301e-01, 6.08422211e-01, 2.42021174e-02],
[ 9.85952471e-01, 6.15750147e-01, 2.55921853e-02],
[ 9.86502013e-01, 6.23104667e-01, 2.78139496e-02],
[ 9.86963670e-01, 6.30485011e-01, 3.09075459e-02],
[ 9.87337182e-01, 6.37890424e-01, 3.49160639e-02],
[ 9.87622296e-01, 6.45320152e-01, 3.98857472e-02],
[ 9.87818759e-01, 6.52773439e-01, 4.55808037e-02],
[ 9.87926330e-01, 6.60249526e-01, 5.17503867e-02],
[ 9.87944783e-01, 6.67747641e-01, 5.83286889e-02],
[ 9.87873910e-01, 6.75267000e-01, 6.52570167e-02],
[ 9.87713535e-01, 6.82806802e-01, 7.24892330e-02],
[ 9.87463516e-01, 6.90366218e-01, 7.99897176e-02],
[ 9.87123759e-01, 6.97944391e-01, 8.77314215e-02],
[ 9.86694229e-01, 7.05540424e-01, 9.56941797e-02],
[ 9.86174970e-01, 7.13153375e-01, 1.03863324e-01],
[ 9.85565739e-01, 7.20782460e-01, 1.12228756e-01],
[ 9.84865203e-01, 7.28427497e-01, 1.20784651e-01],
[ 9.84075129e-01, 7.36086521e-01, 1.29526579e-01],
[ 9.83195992e-01, 7.43758326e-01, 1.38453063e-01],
[ 9.82228463e-01, 7.51441596e-01, 1.47564573e-01],
[ 9.81173457e-01, 7.59134892e-01, 1.56863224e-01],
[ 9.80032178e-01, 7.66836624e-01, 1.66352544e-01],
[ 9.78806183e-01, 7.74545028e-01, 1.76037298e-01],
[ 9.77497453e-01, 7.82258138e-01, 1.85923357e-01],
[ 9.76108474e-01, 7.89973753e-01, 1.96017589e-01],
[ 9.74637842e-01, 7.97691563e-01, 2.06331925e-01],
[ 9.73087939e-01, 8.05409333e-01, 2.16876839e-01],
[ 9.71467822e-01, 8.13121725e-01, 2.27658046e-01],
[ 9.69783146e-01, 8.20825143e-01, 2.38685942e-01],
[ 9.68040817e-01, 8.28515491e-01, 2.49971582e-01],
[ 9.66242589e-01, 8.36190976e-01, 2.61533898e-01],
[ 9.64393924e-01, 8.43848069e-01, 2.73391112e-01],
[ 9.62516656e-01, 8.51476340e-01, 2.85545675e-01],
[ 9.60625545e-01, 8.59068716e-01, 2.98010219e-01],
[ 9.58720088e-01, 8.66624355e-01, 3.10820466e-01],
[ 9.56834075e-01, 8.74128569e-01, 3.23973947e-01],
[ 9.54997177e-01, 8.81568926e-01, 3.37475479e-01],
[ 9.53215092e-01, 8.88942277e-01, 3.51368713e-01],
[ 9.51546225e-01, 8.96225909e-01, 3.65627005e-01],
[ 9.50018481e-01, 9.03409063e-01, 3.80271225e-01],
[ 9.48683391e-01, 9.10472964e-01, 3.95289169e-01],
[ 9.47594362e-01, 9.17399053e-01, 4.10665194e-01],
[ 9.46809163e-01, 9.24168246e-01, 4.26373236e-01],
[ 9.46391536e-01, 9.30760752e-01, 4.42367495e-01],
[ 9.46402951e-01, 9.37158971e-01, 4.58591507e-01],
[ 9.46902568e-01, 9.43347775e-01, 4.74969778e-01],
[ 9.47936825e-01, 9.49317522e-01, 4.91426053e-01],
[ 9.49544830e-01, 9.55062900e-01, 5.07859649e-01],
[ 9.51740304e-01, 9.60586693e-01, 5.24203026e-01],
[ 9.54529281e-01, 9.65895868e-01, 5.40360752e-01],
[ 9.57896053e-01, 9.71003330e-01, 5.56275090e-01],
[ 9.61812020e-01, 9.75924241e-01, 5.71925382e-01],
[ 9.66248822e-01, 9.80678193e-01, 5.87205773e-01],
[ 9.71161622e-01, 9.85282161e-01, 6.02154330e-01],
[ 9.76510983e-01, 9.89753437e-01, 6.16760413e-01],
[ 9.82257307e-01, 9.94108844e-01, 6.31017009e-01], [ 9.88362068e-01, 9.98364143e-01, 6.44924005e-01]]"
the tough part is converting the e- format:
pyArrayToList[p_String] :=
ToExpression@
StringReplace[
p, {m : NumberString ~~ "e" ~~ exp : NumberString :>
m <> " 10^" <> exp, "[" -> "{", "]" -> "}"}]
inferno = With[{x = RGBColor @@@ pyArrayToList@pyarray}, Blend[x, #] &];
BarLegend[{inferno, {0, 1}}]
note per comment by @Kuba this works as well:
inferno = With[{x=RGBColor @@@ ImportString[pyarray, "JSON"]},Blend[x, #] &];
the StringReplace
is actually a tad faster, but not so much to make a difference.
Answered by george2079 on April 10, 2021
Many months ago, I decided to make "reduced" versions of the popular color gradients from Matplotlib, as well as the parula
colormap from MATLAB. (I previously blogged about parula
here.)
These are "reduced" in the sense that unlike the original colormaps that need to keep an array of 256 RGB triplets around, I was able to pare down the list of colors to a smaller portion, while still preserving the features of the color gradient. Since Blend[]
is fine with handling non-equispaced colors, one can use it with these "reduced" color gradients.
I posted these colormaps here and here. (Update: "cividis", a color-blind-friendly variation of "viridis" presented in this paper, is now also implemented.)
To load these gradients into Mathematica, evaluate e.g.
Get["https://pastebin.com/raw/qcyE3vzF"]
To use the color gradients, just evaluate makeBlend[colorName]
; e.g.
ContourPlot[Sin[x + Cos[y]] Cos[Sin[x] + y], {x, -3 π, 3 π}, {y, -3 π, 3 π},
ColorFunction -> makeBlend["Parula"], PlotPoints -> 75]
Here is how the color gradients look, as well as the result of converting them to grayscale with ColorConvert[]
, and applying color blindness effects to them with ImageEffect[]
:
I will continue this discussion with a specific example, the "viridis" color gradient. We can use Kovesi's test image to see how "viridis" performs after being transformed. First, generate the test image:
kovesi = Block[{nc = 64 + 1/2, pixc = 8, a = 1/20, w, h},
w = pixc nc + 1; h = Round[(w - 1)/4];
Image[N[Join[Outer[Times, (Range[h, 1, -1]/(h - 1))^2,
-a Cos[2 π Range[0, w - 1]/pixc]] +
ConstantArray[Subdivide[a, 1 - a, w - 1], h],
ConstantArray[Subdivide[w - 1], Round[h/4]]]]]]
We can use Colorize[]
to test "viridis":
img = Colorize[kovesi, ColorFunction -> makeBlend["Viridis"]]
Convert to grayscale:
ColorConvert[img, GrayLevel]
How a protanopic person might see the image:
ImageEffect[img, {"ColorBlindness", "Protanopia"}]
Answered by J. M.'s ennui on April 10, 2021
Basically an update on what Jason B. has already but with the addition of some stuff for making pretty Format
forms / faking a proper ColorDataFunction
:
getPyArray[url_] :=
ToExpression@StringReplace[
"[" <>
Riffle[
StringCases[
Import[URL[url], "Text"],
Whitespace ~~ "[" ~~
Whitespace ~~
NumberString ~~ (("e" ~~ NumberString) | "") ~~ "," ~~
Whitespace ~~ NumberString ~~ (("e" ~~ NumberString) | "") ~~ "," ~~
Whitespace ~~ NumberString ~~ (("e" ~~ NumberString) | "") ~~ "]"
],
","
] <> "]",
{
"e" -> "*^",
"[" -> "{",
"]" -> "}"
}]
Unprotect[ColorDataFunction];
(* hacked this from the ColorDataFunction FormatValues and Subvalues *)
MakeBoxes[
colf : ColorDataFunction[ scheme_, "Matplotlib", range_, cf_Function],
fmt_
] :=
With[{ thumbBoxes = LinearGradientImage[cf, {100, 15}],
rangeBoxes = MakeBoxes[ range, fmt]},
BoxForm`ArrangeSummaryBox[
ColorDataFunction,
colf,
None,
{
BoxForm`MakeSummaryItem[{"Name:", scheme}, fmt],
BoxForm`MakeSummaryItem[{"Gradient:", thumbBoxes}, fmt]
},
{
BoxForm`MakeSummaryItem[{"Domain:", range}, fmt],
BoxForm`MakeSummaryItem[{"Class:", "Matplotlib"}, fmt]
},
fmt
]
];
ColorDataFunction[ scheme_, "Matplotlib", range_, f_][ x_] := Quiet[ f[ x]]
Protect[ColorDataFunction];
$MPLColorMaps =
MapThread[
# ->
With[{d = RGBColor @@@ getPyArray[#2]},
ColorDataFunction[#, "Matplotlib", {0, 1}, Blend[d, #] &]
] &,
{
{"Magma", "Inferno", "Plasma", "Viridis", "EricsRdBuGnYl",
"EricsRdBuGnYl2", "EricsPuBuGnYl", "FakeParula", "JoesBluGrnPnk2"},
{"https://raw.githubusercontent.com/BIDS/colormap/master/option_a.py",
"https://raw.githubusercontent.com/BIDS/colormap/master/option_b.py",
"https://raw.githubusercontent.com/BIDS/colormap/master/option_c.py",
"https://raw.githubusercontent.com/BIDS/colormap/master/option_d.py",
"https://github.com/BIDS/colormap/raw/master/erics-RdBuGnYl_r.py",
"https://github.com/BIDS/colormap/raw/master/erics-RdBuGnYl_r_v2.py",
"https://github.com/BIDS/colormap/raw/master/erics_PuBuGnYl_r.py",
"https://github.com/BIDS/colormap/raw/master/fake_parula.py",
"https://github.com/BIDS/colormap/raw/master/joes-blu_grn_pnk2.py"}
}
] // Association;
Here's what they look like
Answered by b3m2a1 on April 10, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP