{"id":2849,"date":"2016-11-28T10:02:31","date_gmt":"2016-11-28T15:02:31","guid":{"rendered":"http:\/\/bioinfo.iric.ca\/fr\/?p=2849"},"modified":"2017-04-29T16:31:26","modified_gmt":"2017-04-29T20:31:26","slug":"introduction-a-cowplot","status":"publish","type":"post","link":"https:\/\/bioinfo.iric.ca\/fr\/introduction-a-cowplot\/","title":{"rendered":"Introduction \u00e0 cowplot, pour combiner plusieurs plots avec R"},"content":{"rendered":"<p><a href=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect.png\"><img decoding=\"async\" class=\"size-medium wp-image-2824 aligncenter\" src=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect-300x273.png\" alt=\"perfect\" width=\"500\" height=\"454\" srcset=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect-200x182.png 200w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect-300x273.png 300w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect-400x364.png 400w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect-600x545.png 600w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect-768x698.png 768w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect-800x727.png 800w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect-1024x931.png 1024w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect-1200x1091.png 1200w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>Bonjour \u00e0 tous,<\/p>\n<p>aujourd&rsquo;hui, nous allons voir\u00a0une extension de la librairie <a href=\"http:\/\/ggplot2.org\/\">ggplot2<\/a>: <a href=\"https:\/\/cran.r-project.org\/web\/packages\/cowplot\/index.html\">cowplot<\/a><\/p>\n<blockquote><p>Some helpful extensions and modifications to the &lsquo;ggplot2&rsquo; package. In particular, this package makes it easy to combine multiple &lsquo;ggplot2&rsquo; plots into one and label them with letters, e.g. A, B, C, etc., as is often required for scientific publications.<\/p><\/blockquote>\n<p>Comme on peut le lire dans la description, cette librairie permet de cr\u00e9er des figures avec plusieurs graphiques (plots), mais pas uniquement. Il est aussi possible de l&rsquo;utiliser pour cr\u00e9er des graphiques plus complexes et ce, en \u00e9crivant peu de lignes de code. Nous allons voir comment \u00e0 travers un petit exemple (vous pouvez suivre l&rsquo;exemple pas \u00e0 pas ou regarder le code dans son entier <a href=\"https:\/\/bitbucket.org\/eaudemard\/blog_script\/src\/547aff1b21deb6ad556475698d0e43c5b48ecba8\/cowplot\/cowplot.r?at=master&amp;fileviewer=file-view-default\">ici<\/a>)<\/p>\n<h3>Charger les librairies et cr\u00e9er quelques donn\u00e9e<\/h3>\n<p>Pour cet exemple, nous avons besoin de charger les librairies: ggplot2 et cowplot ; et de g\u00e9n\u00e9rer des valeurs d&rsquo;expression pour deux g\u00e8nes dans deux groupes d&rsquo;\u00e9chantillons. Pour rendre cet exemple un peu plus int\u00e9ressant, le premier g\u00e8ne aura une expression significativement diff\u00e9rente entre les deux groupes, mais non le second.<\/p>\n<pre class=\"r\"><code>library(\"ggplot2\")\r\nlibrary(\"cowplot\")\r\n\r\ng1 = c(rnorm(200, mean=350, sd=100), rnorm(200, mean=700, sd=100))\r\ng2 = c(rnorm(200, mean=350, sd=100), rnorm(200, mean=500, sd=100))\r\ngroup = as.factor(rep(c(1,2), each=200))\r\ndf_exp = data.frame(G1=log2(g1 + 1) , G2=log2(g2 + 1), GROUP=group)\r\n<\/code><\/pre>\n<h3>Cr\u00e9er chaque plot s\u00e9par\u00e9ment<\/h3>\n<p>Comme d&rsquo;habitude, nous commen\u00e7ons par afficher chaque information dans des graphiques distincts. L&rsquo;astuce ici, c&rsquo;est de sauver chaque graphique dans des variables afin de permettre de leur r\u00e9utilisation ou leur modification dans les \u00e9tapes suivantes. Pour cet exemple, nous avons d\u00e9cid\u00e9 d&rsquo;afficher l&rsquo;expression des g\u00e8nes sous la forme d&rsquo;un nuage de points\u00a0et d&rsquo;afficher la distribution de chaque groupe et de chaque g\u00e8ne.<\/p>\n<pre class=\"r\"><code>gg_scatter = ggplot(df_exp, aes(G1, G2, color=GROUP, shape=GROUP)) + geom_point(alpha=.8)\r\n\r\ngg_dist_g1 = ggplot(df_exp, aes(G1, fill=group)) + geom_density(alpha=.5) \r\ngg_dist_g1 = gg_dist_g1 + ylab(\"G1 density\")\r\n\r\ngg_dist_g2 = ggplot(df_exp, aes(G2, fill=group)) + geom_density(alpha=.5) \r\ngg_dist_g2 = gg_dist_g2 + ylab(\"G2 density\")\r\n<\/code><\/pre>\n<h3>Diff\u00e9rentes fa\u00e7ons de regrouper\u00a0vos graphiques, avec\u00a0<em>plot_grid<\/em><\/h3>\n<p>Maintenant, il faut regrouper\u00a0nos 3 graphiques en 1 seul. La prem\u00e8re fa\u00e7on consiste \u00e0 les concat\u00e9ner en ajoutant des \u00e9tiquettes pour les identifier dans un texte principal ou dans la l\u00e9gende. Avec cowplot, cela se fait tr\u00e8s facilement en une ligne de code en utilisant la fonction <em>plot_grid<\/em>\u00a0et en sp\u00e9cifiant quelques param\u00e8tres: <em>nrow<\/em>\/<em>ncol<\/em>, <em>labels<\/em>:<\/p>\n<pre class=\"r\"><code>plot_grid(gg_scatter, gg_dist_g1, gg_dist_g2, nrow=1, labels=c('A', 'B', 'C')) #Or labels=\"AUTO\"<\/code><\/pre>\n<p><center><a href=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_in_row.png\"><img decoding=\"async\" class=\"alignnone size-medium wp-image-2826\" src=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_in_row-300x120.png\" alt=\"all_in_row\" width=\"900\" height=\"360\" srcset=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_in_row-200x80.png 200w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_in_row-300x120.png 300w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_in_row-400x160.png 400w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_in_row-600x240.png 600w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_in_row-768x307.png 768w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_in_row-800x320.png 800w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_in_row-1024x410.png 1024w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_in_row.png 1200w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><br \/>\n<strong>Figure 1.<\/strong> <strong>A)<\/strong>Comparaison de 2 groupes en fonction de l&rsquo;expression de 2 g\u00e8nes. <strong>B)<\/strong>Distribution de G1. <strong>C)<\/strong>Distribution de G2.<\/center>&nbsp;<\/p>\n<p>Ici, on peut remarquer qu&rsquo;il n&rsquo;est pas n\u00e9cessaire de dupliquer certaines informations (comme la legende) et que les graphiques seraient plus faciles \u00e0 interpr\u00e9ter si la m\u00eame echelle \u00e9tait appliqu\u00e9e sur tous les axes partag\u00e9s par les graphiques. Ceci peut \u00eatre rapidement corrig\u00e9, avec le code ci-dessous:<\/p>\n<pre class=\"r\"><code>#\u00c9viter d'afficher la l\u00e9gende plusieurs fois\r\ngg_dist_g1 = gg_dist_g1 + theme(legend.position=\"none\")\r\ngg_dist_g2 = gg_dist_g2 + theme(legend.position=\"none\")\r\n\r\n#Homogenise scale of shared axes\r\nmin_exp = min(df_exp$G1, df_exp$G2) - 0.01\r\nmax_exp = max(df_exp$G1, df_exp$G2) + 0.01\r\ngg_scatter = gg_scatter + ylim(min_exp, max_exp)\r\ngg_scatter = gg_scatter + xlim(min_exp, max_exp)\r\ngg_dist_g1 = gg_dist_g1 + xlim(min_exp, max_exp)\r\ngg_dist_g2 = gg_dist_g2 + xlim(min_exp, max_exp)\r\ngg_dist_g1 = gg_dist_g1 + ylim(0, 2)\r\ngg_dist_g2 = gg_dist_g2 + ylim(0, 2)\r\n<\/code><\/pre>\n<p>Il peut aussi \u00eatre envisag\u00e9 de d\u00e9placer B et C sur une autre ligne pour structurer notre figure en fonction du type de graphe. Comme toujours, il existe plusieurs fa\u00e7ons de r\u00e9aliser cette modification, ci-dessous nous allons cr\u00e9er chaque ligne s\u00e9par\u00e9ment et les r\u00e9unir en 1 colonne \u00e0 l&rsquo;aide de la fonction <em>plot_grid<\/em> (de cowplot) :<\/p>\n<pre class=\"r\"><code>first_row = plot_grid(gg_scatter, labels = c('A'))\r\nsecond_row = plot_grid(gg_dist_g1, gg_dist_g2, labels = c('B', 'C'), nrow = 1)\r\ngg_all = plot_grid(first_row, second_row, labels=c('', ''), ncol=1)\r\n\r\n#Afficher la l\u00e9gende \r\ngg_scatter = gg_scatter + theme(legend.justification=c(0, 1), legend.position=c(0, 1))\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><a href=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2.png\"><img decoding=\"async\" class=\"alignnone size-medium wp-image-2820\" src=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-300x300.png\" alt=\"all_v2\" width=\"500\" height=\"500\" srcset=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-66x66.png 66w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-150x150.png 150w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-200x200.png 200w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-300x300.png 300w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-400x400.png 400w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-600x600.png 600w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-768x768.png 768w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-800x800.png 800w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-1024x1024.png 1024w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v2-1200x1200.png 1200w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><br \/>\n<center><strong>Figure 2.<\/strong>\u00a0La Figure 1. est s\u00e9par\u00e9e en deux lignes<\/center><\/td>\n<td><a href=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v3.png\"><img decoding=\"async\" class=\"alignnone size-medium wp-image-2821\" src=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v3-150x300.png\" alt=\"all_v3\" width=\"250\" height=\"500\" srcset=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v3-150x300.png 150w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v3-200x400.png 200w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v3-400x800.png 400w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v3-512x1024.png 512w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v3-600x1200.png 600w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v3-768x1536.png 768w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v3-800x1600.png 800w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/all_v3.png 1200w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/a><br \/>\n<center><strong>Figure 3.<\/strong>\u00a0Version verticale<\/center><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Sauvegarder votre figure dans un fichier<\/h3>\n<p>Pour sauver votre figure dans un fichier et \u00eatre certain que chaque graphique est redimensionn\u00e9 correctement en fonction de la taille globale de votre figure, cowplot propose d&rsquo;utiliser la fonction <em>save_plot<\/em>, avec les param\u00e8tres\u00a0<em>base_height<\/em>\/<em>base_width<\/em>\u00a0et\u00a0<em>ncol<\/em>\/<em>nrow<\/em>.<\/p>\n<pre class=\"r\"><code>#Avec ncol=nrow=1, on sp\u00e9cifie que la figure (gg_all) est en un bloc avec un hauteur de base de 8 (base_height=8).\r\n#Pour A, on doit redimensionner pour s'ajuster \u00e0 la largeur de B+C (calcul\u00e9e en fonction de la hauteur)\r\nsave_plot(\".\/all_v2.png\", gg_all, base_height=8, ncol=1, nrow=1) #Figure 2\r\n\r\n#Ici, votre figure a 2 blocs s\u00e9par\u00e9s par rang\u00e9e et chaque rang\u00e9e a une hauteur de base de 4 (base_heigth=4)\r\n#B et C doivent \u00eatre redimensionn\u00e9s pour s'ajuster \u00e0 la largeur de A.\r\nsave_plot(\".\/all_v3.pdf\", gg_all, base_height=4, ncol=1, nrow=2) #Figure 3\r\n<\/code><\/pre>\n<p>Vous avez pu noter que l&rsquo;extension dans le nom du fichier suffit \u00e0 sp\u00e9cifier le type de fichier de sortie d\u00e9sir\u00e9. Il n&rsquo;est plus n\u00e9cessaire d&rsquo;adapter notre code en fonction du type de fichier souhait\u00e9 (png(), pdf(), &#8230;).<\/p>\n<p><center><em>\u00ab\u00a0Une<\/em>\u00a0Fonction <em>pour les gouverner toutes\u00a0\u00bb<\/em><\/center><\/p>\n<h3>Tout\u00a0en 1!<\/h3>\n<p>Parfois, il est possible d&rsquo;agr\u00e9ger tous les graphiques en un seul plus attrayant et parlant, comme la figure en en-t\u00eate de cet article. Mais (pour certains d&rsquo;entre nous) ce genre de graphique peut \u00eatre complexe \u00e0 r\u00e9aliser avec des logiciels comme Illustrator (et autres). Si c&rsquo;est votre cas, ggplot2+cowplot est une alternative \u00e0 envisager s\u00e9rieusement. En effet, cette figure peut \u00eatre r\u00e9alis\u00e9e avec quelques lignes suppl\u00e9mentaires au code ci-dessus:<\/p>\n<pre class=\"r\"><code>#Nous devons interchanger les axis de gg_dist_g2\r\ngg_dist_g2 = gg_dist_g2 + coord_flip()\r\n\r\n#Retrait des axes dupliqu\u00e9s\r\ngg_dist_g1 = gg_dist_g1 + theme(axis.title.x=element_blank(),\r\n\t\t\t\taxis.text=element_blank(),\r\n\t\t\t\taxis.line=element_blank(),\r\n\t\t\t\taxis.ticks=element_blank())\r\n\r\ngg_dist_g2 = gg_dist_g2 + theme(axis.title.y=element_blank(),\r\n\t\t\t\taxis.text=element_blank(),\r\n\t\t\t\taxis.line=element_blank(),\r\n\t\t\t\taxis.ticks=element_blank())\r\n\r\n#Modification des marges, c(top, right, bottom, left), pour r\u00e9duire la distance entre les graphiques \r\n#et alignement du graphe de densit\u00e9 de G1 au nuage de points.\r\ngg_dist_g1 = gg_dist_g1 + theme(plot.margin = unit(c(0.5, 0, 0, 0.7), \"cm\"))\r\ngg_scatter = gg_scatter + theme(plot.margin = unit(c(0, 0, 0.5, 0.5), \"cm\"))\r\ngg_dist_g2 = gg_dist_g2 + theme(plot.margin = unit(c(0, 0.5, 0.5, 0), \"cm\"))\r\n\r\n#Ici, combinaison de tous les graphiques et ajustement de la taille des graphes de densit\u00e9\r\n#en utilisant rel_heights\r\nfirst_col = plot_grid(gg_dist_g1, gg_scatter, ncol = 1, rel_heights = c(1, 3))\r\nsecond_col = plot_grid(NULL, gg_dist_g2, ncol = 1, rel_heights = c(1, 3))\r\nperfect = plot_grid(first_col, second_col, ncol = 2, rel_widths = c(3, 1))\r\n\r\nsave_plot(\".\/perfect.png\", perfect, base_height=6)\r\n<\/code><\/pre>\n<h3>Pour conclure<\/h3>\n<p>Cet article n&rsquo;est qu&rsquo;une introduction \u00e0 la librairie cowplot. Nous n&rsquo;avons mentionn\u00e9 que 2 fonctions! Dans cette librairie vous pouvez notamment\u00a0utiliser <em>draw_plot<\/em>\u00a0qui permet d&rsquo;afficher un graphique \u00e0 une coordonn\u00e9e pr\u00e9cise. Je l&rsquo;utilise quand\u00a0j&rsquo;ai besoin de superposer plusieurs graphiques. \u00c7a peut notamment servir \u00e0 changer la couleur de l&rsquo;arri\u00e8re plan en fonction d&rsquo;un param\u00e8tre. Ce n&rsquo;est qu&rsquo;un autre exemple parmi de nombreux autres, ainsi si vous \u00eates curieux d&rsquo;en savoir plus je vous recommande de lire les vignettes et le manuel <a href=\"https:\/\/cran.r-project.org\/web\/packages\/cowplot\/index.html\">ici<\/a>\u00a0et de laisser parler votre imagination.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bonjour \u00e0 tous, aujourd&rsquo;hui, nous allons voir\u00a0une extension de la librairie ggplot2: cowplot Some helpful extensions and modifications to the &lsquo;ggplot2&rsquo; package. In particular, this package makes it easy to combine multiple &lsquo;ggplot2&rsquo; plots into one and label them with letters, e.g. A, B, C, etc., as is often required for scientific publications. Comme on peut le lire dans la description, cette librairie permet de cr\u00e9er des figures avec plusieurs graphiques (plots), mais pas uniquement. Il est aussi possible de <a href=\"https:\/\/bioinfo.iric.ca\/fr\/introduction-a-cowplot\/\"> [&#8230;]<\/a><\/p>\n","protected":false},"author":9,"featured_media":2882,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[24,44],"tags":[],"class_list":["post-2849","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-langage-r","category-visualisation-de-donnees"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2016\/11\/perfect-resized-2.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/comments?post=2849"}],"version-history":[{"count":12,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2849\/revisions"}],"predecessor-version":[{"id":2875,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2849\/revisions\/2875"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/media\/2882"}],"wp:attachment":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/media?parent=2849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/categories?post=2849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/tags?post=2849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}