{"id":453,"date":"2016-04-04T07:48:47","date_gmt":"2016-04-04T11:48:47","guid":{"rendered":"https:\/\/blogs.mathworks.com\/graphics\/?p=453"},"modified":"2016-04-04T07:48:47","modified_gmt":"2016-04-04T11:48:47","slug":"yyaxis","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/graphics\/2016\/04\/04\/yyaxis\/","title":{"rendered":"YYAxis"},"content":{"rendered":"<div class=\"content\"><p>One of the features I love in R2016a is the new <a href=\"https:\/\/www.mathworks.com\/help\/matlab\/ref\/yyaxis.html\">yyaxis function<\/a>. This is a new way to create plots which have two independent Y's, like the older <a href=\"https:\/\/www.mathworks.com\/help\/matlab\/ref\/plotyy.html\">plotyy function<\/a>. Let's take a look at how yyaxis works, and why I think it's cool.<\/p><p>First we'll need some data. This type of chart is really useful for looking for relationships between data which has wildly different values. For example, I'm interested in the relationship between the price of gas and how much people drive. The <a href=\"https:\/\/research.stlouisfed.org\/\">Federal Reserve Bank of St. Louis<\/a> maintains a great collection of historical records of all sorts of economic data like this. I can get the price of what they call \"U.S. Gulf Coast, Regular\" from <a href=\"https:\/\/research.stlouisfed.org\/fred2\/series\/DGASUSGULF\">this page<\/a>, and load it into MATLAB using readtable.<\/p><pre class=\"codeinput\">tgas = readtable(<span class=\"string\">'FRED_DGASUSGULF.xls'<\/span>,<span class=\"string\">'Range'<\/span>,<span class=\"string\">'A11:B7777'<\/span>);\r\ntgas.observation_date = datetime(tgas.observation_date,<span class=\"string\">'InputFormat'<\/span>,<span class=\"string\">'MM\/dd\/yyyy'<\/span>);\r\n<\/pre><p>In the same way, I can get Vehicle Miles Traveled from <a href=\"https:\/\/research.stlouisfed.org\/fred2\/series\/TRFVOLUSM227NFWA\">this page<\/a>.<\/p><pre class=\"codeinput\">tnadjmiles = readtable(<span class=\"string\">'FRED_TRFVOLUSM227NFWA.xls'<\/span>,<span class=\"string\">'Range'<\/span>,<span class=\"string\">'A11:B563'<\/span>);\r\ntnadjmiles.observation_date = datetime(tnadjmiles.observation_date,<span class=\"string\">'InputFormat'<\/span>,<span class=\"string\">'MM\/dd\/yyyy'<\/span>);\r\n<\/pre><p>Now we're ready to start making our plot. If you're used to plotyy, then you would probably think that we need to collect all of our data together and pass it into a special plotting command. But that's not how yyaxis works. Instead, I use the yyaxis function to \"select a side of the axes\".<\/p><pre class=\"codeinput\">yyaxis <span class=\"string\">left<\/span>\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_01.png\" alt=\"\"> <p>Notice that when I did that, I got a YAxis on each side. A blue one on the left, and a red one on the right.<\/p><p>Now I can use any of the regular MATLAB charting commands to insert a chart into that \"side\" of the axes. Here I'll use plot and ylabel to create a line chart from my gas prices with units labeled on the YAxis. Notice that the plot is colored to match the YAxis on the left.<\/p><pre class=\"codeinput\">plot(tgas.observation_date,tgas.DGASUSGULF)\r\nylabel(<span class=\"string\">'Dollars per Gallon'<\/span>)\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_02.png\" alt=\"\"> <p>Now we can call yyaxis again to switch to the other side, and plot and label my mileage. Notice that this new plot gets the red color of the YAxis on the right.<\/p><pre class=\"codeinput\">yyaxis <span class=\"string\">right<\/span>\r\nplot(tnadjmiles.observation_date,tnadjmiles.TRFVOLUSM227NFWA)\r\nylabel(<span class=\"string\">'Millions of Miles'<\/span>)\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_03.png\" alt=\"\"> <p>We now have the basic chart I wanted, but we have more historical data for the right side than we do for the left side. That doesn't help us look for correlations, so I want to trim it off. To do that, I can switch back to the left side. If I look in the Children property of the Axes, I'll find the plot of gas prices. I can get the limits of its XData and use that as the XLim of the axes. %<\/p><pre class=\"codeinput\">yyaxis <span class=\"string\">left<\/span>\r\nh = get(gca,<span class=\"string\">'Children'<\/span>);\r\nxlim([min(h.XData), max(h.XData)])\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_04.png\" alt=\"\"> <p>Notice that the call to XLim affects both sides of the Axes. That's because there's only one XAxis.<\/p><pre class=\"codeinput\">ax = gca;\r\nax.XAxis\r\n<\/pre><pre class=\"codeoutput\">ans = \r\n  NumericRuler with properties:\r\n\r\n             Limits: [725525 736396]\r\n              Scale: 'linear'\r\n           Exponent: 0\r\n         TickValues: [1x10 double]\r\n    TickLabelFormat: '%g'\r\n\r\n  Use GET to show all properties\r\n<\/pre><p>But if we look at YAxis, we'll see that it's an array of 2.<\/p><pre class=\"codeinput\">ax.YAxis\r\n<\/pre><pre class=\"codeoutput\">ans = \r\n  2x1 NumericRuler array:\r\n\r\n  NumericRuler\r\n  NumericRuler\r\n<\/pre><p>This makes it easy to customize all of the tick formats. For example, I'd really like to have the same number of decimal places on all of the Y ticks on the left.<\/p><pre class=\"codeinput\">ax.YAxis(1).TickLabelFormat = <span class=\"string\">'%.2f'<\/span>;\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_05.png\" alt=\"\"> <p>And comma separated integers on the right.<\/p><pre class=\"codeinput\">ax.YAxis(2).TickLabelFormat = <span class=\"string\">'%,d'<\/span>;\r\nax.YAxis(2).Exponent = 0;\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_06.png\" alt=\"\"> <p>One problem with the mileage data is that it has a lot of seasonal variation. That's because Americans generally drive more in the summer months than they do in the winter. This can make it hard to compare to the gas price data, especially if we zoom in to look at details.<\/p><pre class=\"codeinput\">xlim([datenum(datetime(2006,1,1)), datenum(datetime(2011,1,1))])\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_07.png\" alt=\"\"> <p>We could perform a low-pass filter on the data, but the Federal Reserve Bank has already done that for us, so we can just download an additional dataset.<\/p><pre class=\"codeinput\">tmiles = readtable(<span class=\"string\">'FRED_TRFVOLUSM227SFWA.xls'<\/span>,<span class=\"string\">'Range'<\/span>,<span class=\"string\">'A11:B563'<\/span>);\r\ntmiles.observation_date = datetime(tmiles.observation_date,<span class=\"string\">'Format'<\/span>,<span class=\"string\">'MM\/dd\/yyyy'<\/span>);\r\n<\/pre><p>Now we want to add this to our Axes. With plotyy, that would be a little tricky. But with yyaxis, I can just switch to the right side, use hold, and plot the new data.<\/p><pre class=\"codeinput\">yyaxis <span class=\"string\">right<\/span>\r\nhold <span class=\"string\">on<\/span>\r\nplot(tmiles.observation_date,tmiles.TRFVOLUSM227SFWA)\r\nhold <span class=\"string\">off<\/span>\r\nxlim([datenum(datetime(2006,1,1)), datenum(datetime(2011,1,1))])\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_08.png\" alt=\"\"> <p>Notice that this new curve is the same red color, but it gets a new line style so we can tell the two plots apart.<\/p><pre class=\"codeinput\">legend(<span class=\"string\">'Gas price'<\/span>,<span class=\"string\">'Miles traveled'<\/span>,<span class=\"string\">'Miles\/seasonally adjusted'<\/span>)\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_09.png\" alt=\"\"> <p>If I delete the unadjusted mileage data and zoom out, we can see that the Fed's adjusted data only goes back to 2000.<\/p><pre class=\"codeinput\">delete(ax.Children(2))\r\nh = ax.Children(1);\r\nxlim([min(h.XData), max(h.XData)])\r\nh.LineStyle = <span class=\"string\">'-'<\/span>;\r\nlegend <span class=\"string\">hide<\/span>\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_10.png\" alt=\"\"> <p>It does look like there's a relationship between the two, but it's important to remember that there was a major recession in this same period. Perhaps that had more effect on the miles traveled than the price of gas did. Let's go back to the FRED data and download the Civilian Unemployment Rate from <a href=\"https:\/\/research.stlouisfed.org\/fred2\/series\/UNRATE\">this page<\/a>.<\/p><pre class=\"codeinput\">unrate = readtable(<span class=\"string\">'FRED_UNRATE.xls'<\/span>,<span class=\"string\">'Range'<\/span>,<span class=\"string\">'A11:B829'<\/span>);\r\nunrate.observation_date = datetime(unrate.observation_date,<span class=\"string\">'InputFormat'<\/span>,<span class=\"string\">'MM\/dd\/yyyy'<\/span>);\r\n<\/pre><p>And then we'll go to the left side and replace gas prices with unemployment rate.<\/p><pre class=\"codeinput\">yyaxis <span class=\"string\">left<\/span>\r\nplot(unrate.observation_date,unrate.UNRATE)\r\nylabel(<span class=\"string\">'Unemployment Rate'<\/span>)\r\nax.YAxis(1).TickLabelFormat = <span class=\"string\">'%.1f\\%'<\/span>;\r\nxlim([min(h.XData), max(h.XData)])\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_correlation_11.png\" alt=\"\"> <p>That pairing looks there might be a relationship, doesn't it? At this point, we're going to want to start statistical analysis of the relationship, but I'm going to skip that. I just wanted to show you how handy the new yyaxis function is for comparing datasets like this.<\/p><p>There's another important difference in yyaxis that I can't really show in a blog post. When I pan an Axes that was created by plotyy, everything pans in lockstep. When I pan an Axes that was created by yyaxis, the XLim of the two sides move together, but only the YLim of the \"current\" side changes. I found this feature very useful for looking for correlations between these datasets, but we'd really like to hear what you think of the change.<\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_fa08dccb0b3445c78e01ceab589ad828() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='fa08dccb0b3445c78e01ceab589ad828 ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' fa08dccb0b3445c78e01ceab589ad828';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2016 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_fa08dccb0b3445c78e01ceab589ad828()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2016a<br><\/p><\/div><!--\r\nfa08dccb0b3445c78e01ceab589ad828 ##### SOURCE BEGIN #####\r\n%%\r\n% One of the features I love in R2016a is the new\r\n% <https:\/\/www.mathworks.com\/help\/matlab\/ref\/yyaxis.html yyaxis function>.\r\n% This is a new way to create plots which have two independent Y's, like\r\n% the older <https:\/\/www.mathworks.com\/help\/matlab\/ref\/plotyy.html plotyy function>.\r\n% Let's take a look at how yyaxis works, and why I think it's cool.\r\n% \r\n% First we'll need some data. This type of chart is really useful for\r\n% looking for relationships between data which has wildly different values. \r\n% For example, I'm interested in the relationship between the price of gas\r\n% and how much people drive. The <https:\/\/research.stlouisfed.org\/ Federal Reserve Bank of St. Louis> \r\n% maintains a great collection of historical records of all sorts of\r\n% economic data like this. I can get the price of what they\r\n% call \"U.S. Gulf Coast, Regular\" from\r\n% <https:\/\/research.stlouisfed.org\/fred2\/series\/DGASUSGULF this page>, and \r\n% load it into MATLAB using readtable.\r\n%\r\ntgas = readtable('FRED_DGASUSGULF.xls','Range','A11:B7777');\r\ntgas.observation_date = datetime(tgas.observation_date,'InputFormat','MM\/dd\/yyyy');\r\n\r\n%%\r\n% In the same way, I can get Vehicle Miles Traveled from\r\n% <https:\/\/research.stlouisfed.org\/fred2\/series\/TRFVOLUSM227NFWA this\r\n% page>.\r\n%\r\ntnadjmiles = readtable('FRED_TRFVOLUSM227NFWA.xls','Range','A11:B563');\r\ntnadjmiles.observation_date = datetime(tnadjmiles.observation_date,'InputFormat','MM\/dd\/yyyy');\r\n\r\n%%\r\n% Now we're ready to start making our plot. If you're used to plotyy, then\r\n% you would probably think that we need to collect all of our data together\r\n% and pass it into a special plotting command. But that's not how yyaxis\r\n% works. Instead, I use the yyaxis function to \"select a side of the axes\".\r\n%\r\nyyaxis left\r\n\r\n%%\r\n% Notice that when I did that, I got a YAxis on each side. A blue one on the left,\r\n% and a red one on the right.\r\n%\r\n% Now I can use any of the regular MATLAB charting\r\n% commands to insert a chart into that \"side\" of the axes. Here I'll use\r\n% plot and ylabel to create a line chart from my gas prices with units\r\n% labeled on the YAxis. Notice that the plot is colored to match the YAxis\r\n% on the left.\r\n%\r\nplot(tgas.observation_date,tgas.DGASUSGULF)\r\nylabel('Dollars per Gallon')\r\n\r\n%%\r\n% Now we can call yyaxis again to switch to the other side, and plot and\r\n% label my mileage. Notice that this new plot gets the red color of the\r\n% YAxis on the right.\r\n%\r\nyyaxis right\r\nplot(tnadjmiles.observation_date,tnadjmiles.TRFVOLUSM227NFWA)\r\nylabel('Millions of Miles')\r\n\r\n%%\r\n% We now have the basic chart I wanted, but we have more historical data\r\n% for the right side than we do for the left side. That doesn't help us\r\n% look for correlations, so I want to trim it off. To do that, I can switch\r\n% back to the left side. If I look in the Children property of the Axes,\r\n% I'll find the plot of gas prices. I can get the limits of its XData and\r\n% use that as the XLim of the axes. %\r\nyyaxis left\r\nh = get(gca,'Children');\r\nxlim([min(h.XData), max(h.XData)])\r\n\r\n%%\r\n% Notice that the call to XLim affects both sides of the Axes. That's\r\n% because there's only one XAxis.\r\nax = gca;\r\nax.XAxis\r\n\r\n%%\r\n% But if we look at YAxis, we'll see that it's an array of 2.\r\n%\r\nax.YAxis\r\n\r\n%%\r\n% This makes it easy to customize all of the tick formats. For example, I'd\r\n% really like to have the same number of decimal places on all of the Y\r\n% ticks on the left.\r\n%\r\nax.YAxis(1).TickLabelFormat = '%.2f';\r\n\r\n%%\r\n% And comma separated integers on the right.\r\nax.YAxis(2).TickLabelFormat = '%,d';\r\nax.YAxis(2).Exponent = 0;\r\n\r\n%%\r\n% One problem with the mileage data is that it has a lot of seasonal\r\n% variation. That's because Americans generally drive more in the summer\r\n% months than they do in the winter. This can make it hard to compare to the \r\n% gas price data, especially if we zoom in to look at details.\r\n%\r\nxlim([datenum(datetime(2006,1,1)), datenum(datetime(2011,1,1))])\r\n\r\n%%\r\n% We could perform a low-pass filter on the data, but the Federal Reserve\r\n% Bank has already done that for us, so we can just download an additional\r\n% dataset.\r\n%\r\ntmiles = readtable('FRED_TRFVOLUSM227SFWA.xls','Range','A11:B563');\r\ntmiles.observation_date = datetime(tmiles.observation_date,'Format','MM\/dd\/yyyy');\r\n\r\n%%\r\n% Now we want to add this to our Axes. With plotyy, that would be a little\r\n% tricky. But with yyaxis, I can just switch to the right side, use hold,\r\n% and plot the new data.\r\n%\r\nyyaxis right\r\nhold on\r\nplot(tmiles.observation_date,tmiles.TRFVOLUSM227SFWA)\r\nhold off\r\nxlim([datenum(datetime(2006,1,1)), datenum(datetime(2011,1,1))])\r\n\r\n%%\r\n% Notice that this new curve is the same red color, but it gets a new line\r\n% style so we can tell the two plots apart.\r\n%\r\nlegend('Gas price','Miles traveled','Miles\/seasonally adjusted')\r\n\r\n%%\r\n% If I delete the unadjusted mileage data and zoom out, we can see that the\r\n% Fed's adjusted data only goes back to 2000. \r\n%\r\ndelete(ax.Children(2))\r\nh = ax.Children(1);\r\nxlim([min(h.XData), max(h.XData)])\r\nh.LineStyle = '-';\r\nlegend hide\r\n\r\n%%\r\n% It does look like there's a relationship between the two, but it's\r\n% important to remember that there was a major recession in this same\r\n% period. Perhaps that had more effect on the miles traveled than the price\r\n% of gas did. Let's go back to the FRED data and download the Civilian Unemployment\r\n% Rate from <https:\/\/research.stlouisfed.org\/fred2\/series\/UNRATE this\r\n% page>.\r\n%\r\nunrate = readtable('FRED_UNRATE.xls','Range','A11:B829');\r\nunrate.observation_date = datetime(unrate.observation_date,'InputFormat','MM\/dd\/yyyy');\r\n\r\n%%\r\n% And then we'll go to the left side and replace gas prices with\r\n% unemployment rate.\r\nyyaxis left\r\nplot(unrate.observation_date,unrate.UNRATE)\r\nylabel('Unemployment Rate')\r\nax.YAxis(1).TickLabelFormat = '%.1f\\%';\r\nxlim([min(h.XData), max(h.XData)])\r\n\r\n%%\r\n% That pairing looks there might be a relationship, doesn't it? At this\r\n% point, we're going to want to start statistical analysis of the\r\n% relationship, but I'm going to skip that. I just wanted to show you how\r\n% handy the new yyaxis function is for comparing datasets like this.\r\n%\r\n% There's another important difference in yyaxis that I can't really show\r\n% in a blog post. When I pan an Axes that was created by plotyy, everything\r\n% pans in lockstep. When I pan an Axes that was created by yyaxis, the XLim\r\n% of the two sides move together, but only the YLim of the \"current\" side\r\n% changes. I found this feature very useful for looking for correlations\r\n% between these datasets, but we'd really like to hear what you think of\r\n% the change.\r\n%\r\n\r\n##### SOURCE END ##### fa08dccb0b3445c78e01ceab589ad828\r\n-->","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/graphics\/files\/gas_travel_thumbnail.png\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div><p>One of the features I love in R2016a is the new yyaxis function. This is a new way to create plots which have two independent Y's, like the older plotyy function. Let's take a look at how yyaxis... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/graphics\/2016\/04\/04\/yyaxis\/\">read more >><\/a><\/p>","protected":false},"author":89,"featured_media":455,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/posts\/453"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/users\/89"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/comments?post=453"}],"version-history":[{"count":4,"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/posts\/453\/revisions"}],"predecessor-version":[{"id":470,"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/posts\/453\/revisions\/470"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/media\/455"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/media?parent=453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/categories?post=453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/graphics\/wp-json\/wp\/v2\/tags?post=453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}