<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lucas Shen</title>
    <description>The latest articles on DEV Community by Lucas Shen (@lsys).</description>
    <link>https://dev.to/lsys</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F931605%2F0b3e9b93-0ec6-4201-9052-475ed60e405f.png</url>
      <title>DEV Community: Lucas Shen</title>
      <link>https://dev.to/lsys</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lsys"/>
    <language>en</language>
    <item>
      <title>Making coefficient plots in Python using Forestplot</title>
      <dc:creator>Lucas Shen</dc:creator>
      <pubDate>Wed, 28 Sep 2022 12:45:27 +0000</pubDate>
      <link>https://dev.to/lsys/making-coefficient-plots-in-python-using-forestplot-7i7</link>
      <guid>https://dev.to/lsys/making-coefficient-plots-in-python-using-forestplot-7i7</guid>
      <description>&lt;p&gt;This post illustrates how one can use the open-source &lt;a href="https://github.com/lsys/forestplot" rel="noopener noreferrer"&gt;&lt;code&gt;Forestplot&lt;/code&gt;&lt;/a&gt; package to plot estimates with confidence intervals.&lt;/p&gt;

&lt;p&gt;This package plots correlation coefficients or regression estimates from upstream analyses (see &lt;a href="https://nbviewer.org/github/LSYS/forestplot/blob/main/examples/get-sleep.ipynb" rel="noopener noreferrer"&gt;this example of correlation  analysis&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Prepare the package and load the data
&lt;/h3&gt;

&lt;p&gt;To install the package from PyPI:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

pip install forestplot


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Load example dataset that reports how certain factors correlate with the amount of sleep one gets:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;forestplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;fp&lt;/span&gt;

&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sleep&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# companion example data
&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;var&lt;/th&gt;
&lt;th&gt;r&lt;/th&gt;
&lt;th&gt;moerror&lt;/th&gt;
&lt;th&gt;label&lt;/th&gt;
&lt;th&gt;group&lt;/th&gt;
&lt;th&gt;ll&lt;/th&gt;
&lt;th&gt;hl&lt;/th&gt;
&lt;th&gt;n&lt;/th&gt;
&lt;th&gt;power&lt;/th&gt;
&lt;th&gt;p-val&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;age&lt;/td&gt;
&lt;td&gt;0.0903729&lt;/td&gt;
&lt;td&gt;0.0696271&lt;/td&gt;
&lt;td&gt;in years&lt;/td&gt;
&lt;td&gt;age&lt;/td&gt;
&lt;td&gt;0.02&lt;/td&gt;
&lt;td&gt;0.16&lt;/td&gt;
&lt;td&gt;706&lt;/td&gt;
&lt;td&gt;0.67&lt;/td&gt;
&lt;td&gt;0.0163089&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;black&lt;/td&gt;
&lt;td&gt;-0.0270573&lt;/td&gt;
&lt;td&gt;0.0770573&lt;/td&gt;
&lt;td&gt;=1 if black&lt;/td&gt;
&lt;td&gt;other factors&lt;/td&gt;
&lt;td&gt;-0.1&lt;/td&gt;
&lt;td&gt;0.05&lt;/td&gt;
&lt;td&gt;706&lt;/td&gt;
&lt;td&gt;0.11&lt;/td&gt;
&lt;td&gt;0.472889&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;clerical&lt;/td&gt;
&lt;td&gt;0.0480811&lt;/td&gt;
&lt;td&gt;0.0719189&lt;/td&gt;
&lt;td&gt;=1 if clerical worker&lt;/td&gt;
&lt;td&gt;occupation&lt;/td&gt;
&lt;td&gt;-0.03&lt;/td&gt;
&lt;td&gt;0.12&lt;/td&gt;
&lt;td&gt;706&lt;/td&gt;
&lt;td&gt;0.25&lt;/td&gt;
&lt;td&gt;0.201948&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In the above &lt;code&gt;dataframe&lt;/code&gt;, each row is an individual characteristic with a corresponding correlation coefficient from correlating the characteristic with the amount of sleep one gets per night.&lt;/p&gt;

&lt;p&gt;The first row, &lt;code&gt;age&lt;/code&gt;, for instance, with a correlation coefficient of &lt;code&gt;0.09 (p = 0.016)&lt;/code&gt;, says that people who are older get more sleep.&lt;br&gt;
(See &lt;a href="https://nbviewer.org/github/LSYS/forestplot/blob/main/examples/get-sleep.ipynb" rel="noopener noreferrer"&gt;this notebook&lt;/a&gt; to see how the correlation coefficients are computed from the real &lt;code&gt;sleep75.csv&lt;/code&gt; data.)&lt;/p&gt;
&lt;h3&gt;
  
  
  Plot the estimates
&lt;/h3&gt;

&lt;p&gt;Forest plots (or coefficient plots, dot plots, coefplots) are useful to visualize the estimates and their confidence intervals. &lt;/p&gt;

&lt;p&gt;To plot the estimates in &lt;code&gt;df&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="n"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forestplot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# the dataframe with results data
&lt;/span&gt;              &lt;span class="n"&gt;estimate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# col containing estimated effect size 
&lt;/span&gt;              &lt;span class="n"&gt;ll&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ll&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hl&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# columns containing conf. int. lower and higher limits
&lt;/span&gt;              &lt;span class="n"&gt;varlabel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;label&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# column containing variable label
&lt;/span&gt;              &lt;span class="n"&gt;ylabel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Confidence interval&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# y-label title
&lt;/span&gt;              &lt;span class="n"&gt;xlabel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Pearson correlation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# x-label title
&lt;/span&gt;              &lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FLSYS%2Fforestplot%2Fmain%2Fdocs%2Fimages%2Fvanilla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FLSYS%2Fforestplot%2Fmain%2Fdocs%2Fimages%2Fvanilla.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Customizing and adding annotations (Pt. 1)
&lt;/h3&gt;

&lt;p&gt;You can add variable group subheadings (e.g. the Labor Factors subheading) and sort the estimates (within groups). You can also sort the order of the variable group subheadings (&lt;code&gt;group_order&lt;/code&gt;):&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="n"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forestplot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# the dataframe with results data
&lt;/span&gt;              &lt;span class="n"&gt;estimate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# col containing estimated effect size 
&lt;/span&gt;              &lt;span class="n"&gt;moerror&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;moerror&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# columns containing conf. int. margin of error
&lt;/span&gt;              &lt;span class="n"&gt;varlabel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;label&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# column containing variable label
&lt;/span&gt;              &lt;span class="n"&gt;groupvar&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;group&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Add variable groupings 
&lt;/span&gt;              &lt;span class="c1"&gt;# group ordering
&lt;/span&gt;              &lt;span class="n"&gt;group_order&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;labor factors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;occupation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;age&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;health factors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;family factors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;area of residence&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;other factors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
              &lt;span class="n"&gt;sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;  &lt;span class="c1"&gt;# sort in ascending order (sorts within group if group is specified)               
&lt;/span&gt;              &lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FLSYS%2Fforestplot%2Fmain%2Fdocs%2Fimages%2Fgroup-grouporder-sort.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FLSYS%2Fforestplot%2Fmain%2Fdocs%2Fimages%2Fgroup-grouporder-sort.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Customizing and adding annotations (Pt. 2)
&lt;/h3&gt;

&lt;p&gt;You can also add more annotations to the plot, such as the sample size (e.g. &lt;code&gt;N&lt;/code&gt; and &lt;code&gt;formatted_pval&lt;/code&gt;) and add table lines:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="n"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forestplot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# the dataframe with results data
&lt;/span&gt;              &lt;span class="n"&gt;estimate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# col containing estimated effect size 
&lt;/span&gt;              &lt;span class="n"&gt;ll&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ll&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hl&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# lower &amp;amp; higher limits of conf. int.
&lt;/span&gt;              &lt;span class="n"&gt;varlabel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;label&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# column containing the varlabels to be printed on far left
&lt;/span&gt;              &lt;span class="n"&gt;pval&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;p-val&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# column containing p-values to be formatted
&lt;/span&gt;              &lt;span class="n"&gt;annote&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;power&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;est_ci&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;  &lt;span class="c1"&gt;# columns to report on left of plot
&lt;/span&gt;              &lt;span class="n"&gt;annoteheaders&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Power&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Est. (95% Conf. Int.)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;  &lt;span class="c1"&gt;# ^corresponding headers
&lt;/span&gt;              &lt;span class="n"&gt;rightannote&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;formatted_pval&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;group&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;  &lt;span class="c1"&gt;# columns to report on right of plot 
&lt;/span&gt;              &lt;span class="n"&gt;right_annoteheaders&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;P-value&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Variable group&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;  &lt;span class="c1"&gt;# ^corresponding headers
&lt;/span&gt;              &lt;span class="n"&gt;groupvar&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;group&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# column containing group labels
&lt;/span&gt;              &lt;span class="n"&gt;group_order&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;labor factors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;occupation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;age&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;health factors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;family factors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;area of residence&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;other factors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;                   
              &lt;span class="n"&gt;xlabel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Pearson correlation coefficient&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# x-label title
&lt;/span&gt;              &lt;span class="n"&gt;xticks&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;  &lt;span class="c1"&gt;# x-ticks to be printed
&lt;/span&gt;              &lt;span class="n"&gt;sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# sort estimates in ascending order
&lt;/span&gt;              &lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Format as a table
&lt;/span&gt;              &lt;span class="c1"&gt;# Additional kwargs for customizations
&lt;/span&gt;              &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;marker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;D&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# set maker symbol as diamond
&lt;/span&gt;                 &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;markersize&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# adjust marker size
&lt;/span&gt;                 &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xlinestyle&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;  &lt;span class="c1"&gt;# long dash for x-reference line 
&lt;/span&gt;                 &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xlinecolor&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# gray color for x-reference line
&lt;/span&gt;                 &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xtick_size&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# adjust x-ticker fontsize
&lt;/span&gt;                &lt;span class="p"&gt;}&lt;/span&gt;  
              &lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FLSYS%2Fforestplot%2Fmain%2Fdocs%2Fimages%2Fmain.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FLSYS%2Fforestplot%2Fmain%2Fdocs%2Fimages%2Fmain.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Final remarks
&lt;/h3&gt;

&lt;p&gt;Planned future enhancements include allowing for multiple estimates per row in the plot. &lt;/p&gt;

&lt;p&gt;Forest plots have many aliases. Other names include coefplots, coefficient plots, meta-analysis plots, dot plots, dot-and-whisker plots, blobbograms, margins plots, regression plots, and ropeladder plots.&lt;/p&gt;

&lt;p&gt;This posts hopefully gives my &lt;code&gt;forestplot&lt;/code&gt; package some visibility. At the the same time, happy to hear comments about the API's ease of use and features. plot. See &lt;a href="https://github.com/lsys/forestplot#readme" rel="noopener noreferrer"&gt;the GitHub repo readme&lt;/a&gt; for a more substantial documentation.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/LSYS" rel="noopener noreferrer"&gt;
        LSYS
      &lt;/a&gt; / &lt;a href="https://github.com/LSYS/forestplot" rel="noopener noreferrer"&gt;
        forestplot
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A Python package to make publication-ready but customizable coefficient plots.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
  Forestplot
&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;a href="https://pypi.org/project/forestplot" rel="nofollow noopener noreferrer"&gt;
  &lt;img alt="PyPI - Python Version" src="https://camo.githubusercontent.com/e51c03868a303810e2c270e70c0a21a06eb166bf2d5c50f215a5f59a05ff3d84/68747470733a2f2f696d672e736869656c64732e696f2f707970692f707976657273696f6e732f666f72657374706c6f743f6c6162656c3d507974686f6e266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465"&gt;
  &lt;/a&gt;&lt;br&gt;
  &lt;b&gt;Easy API for forest plots.&lt;/b&gt;&lt;br&gt;
  A Python package to make publication-ready but customizable forest plots
&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/LSYS/forestplot/main/docs/images/main.png"&gt;&lt;img width="100%" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FLSYS%2Fforestplot%2Fmain%2Fdocs%2Fimages%2Fmain.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;This package makes publication-ready forest plots easy to make out-of-the-box. Users provide a &lt;code&gt;dataframe&lt;/code&gt; (e.g. from a spreadsheet) where rows correspond to a variable/study with columns including estimates, variable labels, and lower and upper confidence interval limits.
Additional options allow easy addition of columns in the &lt;code&gt;dataframe&lt;/code&gt; as annotations in the plot.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;


&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Release&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://pypi.org/project/forestplot/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/16843d18119ee2c5bc766cf87fe215d8ee5be2c9459b9fcfc48ea20feae0aaa5/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f666f72657374706c6f743f636f6c6f723d626c7565266c6162656c3d50795049266c6f676f3d70797069266c6f676f436f6c6f723d7768697465" alt="PyPI"&gt;&lt;/a&gt; &lt;a href="https://anaconda.org/conda-forge/forestplot" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ba047ae0412979044321cc9a9070a804627c6a66d26375bee790fc39c343ff47/68747470733a2f2f696d672e736869656c64732e696f2f636f6e64612f766e2f636f6e64612d666f7267652f666f72657374706c6f743f6c6f676f3d636f6e64612d666f726765266c6f676f436f6c6f723d7768697465" alt="Conda (channel only)"&gt;&lt;/a&gt; &lt;a href="https://github.com/LSYS/forestplot/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/01f8511ccb6696d855fc99ab7dab1a786fa0da58c5f14fe192ce833ffd6aa972/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6c7379732f666f72657374706c6f743f636f6c6f723d626c7565266c6162656c3d4c617465737425323072656c65617365" alt="GitHub release (latest by date)"&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Status&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/LSYS/forestplot/actions/workflows/CI.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/LSYS/forestplot/actions/workflows/CI.yml/badge.svg" alt="CI"&gt;&lt;/a&gt; &lt;a href="https://github.com/LSYS/forestplot/actions/workflows/nb.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/LSYS/forestplot/actions/workflows/nb.yml/badge.svg" alt="Notebooks"&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coverage&lt;/td&gt;
&lt;td&gt;&lt;a href="https://app.codecov.io/gh/LSYS/forestplot" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9fc754f0b3eb8d93bc9e1be622800f546f44b46106d416238a67ed70fe571e15/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6c7379732f666f72657374706c6f743f6c6f676f3d636f6465636f76266c6f676f436f6c6f723d7768697465266c6162656c3d636f6465636f76" alt="Codecov"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;&lt;a href="https://pypi.org/project/forestplot/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/21532e8cec7d88d0acc84ad439945959e7b15fa7fc2d53522f3053e47f7e43fb/68747470733a2f2f696d672e736869656c64732e696f2f707970692f707976657273696f6e732f666f72657374706c6f743f6c6162656c3d507974686f6e253230332e36253242266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="PyPI - Python Version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docs&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://forestplot.readthedocs.io/en/latest/?badge=latest" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bf10061ab6fb170ad72f880f6238228784af4557d721cd56fda413303272e7a7/68747470733a2f2f696d672e736869656c64732e696f2f72656164746865646f63732f666f72657374706c6f742f737461626c653f6c6162656c3d646f6373266c6f676f3d72656164746865646f6373266c6f676f436f6c6f723d7768697465" alt="Read the Docs (version)"&gt;&lt;/a&gt; &lt;a href="https://github.com/LSYS/forestplot/actions/workflows/links.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/LSYS/forestplot/actions/workflows/links.yml/badge.svg" alt="DocLinks"&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meta&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://choosealicense.com/licenses/mit/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/14a7941469f5c5d06327fae0ed2e88b24a6e526536b18a232fdd9168f22e545d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6c7379732f666f72657374706c6f743f636f6c6f723d707572706c65266c6162656c3d4c6963656e7365" alt="GitHub"&gt;&lt;/a&gt; &lt;a href="https://pycqa.github.io/isort/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4e71e9b7ea25fbc70f186444684f4bfd9def4c737dfc327796cc2c332cbf0b46/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f253230696d706f7274732d69736f72742d2532333136373462313f7374796c653d666c6174266c6162656c436f6c6f723d656638333336" alt="Imports: isort"&gt;&lt;/a&gt; &lt;a href="https://github.com/psf/black" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5bf9e9fa18966df7cb5fac7715bef6b72df15e01a6efa9d616c83f9fcb527fe2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64652532307374796c652d626c61636b2d3030303030302e737667" alt="Code style: black"&gt;&lt;/a&gt; &lt;a href="https://github.com/python/mypy" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a31eb5d37d979e8948c74bb2eeb7f2e1c70c278ec17a2a208ab21ebd7f719638/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74797065732d4d7970792d626c75652e737667" alt="types - Mypy"&gt;&lt;/a&gt; &lt;a href="https://zenodo.org/badge/latestdoi/510013191" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6f88004e100ad0369a07d14e9b562d64eeee9413e803accfb71302b7d1470e5e/68747470733a2f2f7a656e6f646f2e6f72672f62616467652f3531303031333139312e737667" alt="DOI"&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Binder&lt;/td&gt;
&lt;td&gt;&lt;a href="https://mybinder.org/v2/gh/lsys/forestplot/main?labpath=examples%2Freadme-examples.ipynb" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7861126a7eb56440456a50288331e87b9604edbaa125354195637561fd400014/68747470733a2f2f6d7962696e6465722e6f72672f62616467655f6c6f676f2e737667" alt="Binder"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Table of Contents&lt;a href="https://github.com/LSYS/forestplot#table-of-contents" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FLSYS%2Fforestplot%2Fmain%2Fdocs%2Fimages%2Fpin.svg" alt=""&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;/div&gt;
&lt;b&gt;show/hide&lt;/b&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/LSYS/forestplot#installation" rel="noopener noreferrer"&gt;Installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/LSYS/forestplot#quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/LSYS/forestplot#some-examples-with-customizations" rel="noopener noreferrer"&gt;Some Examples with Customizations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/LSYS/forestplot#gallery-and-api-options" rel="noopener noreferrer"&gt;Gallery and API Options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/LSYS/forestplot#multi-models" rel="noopener noreferrer"&gt;Multi-models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/LSYS/forestplot#known-issues" rel="noopener noreferrer"&gt;Known Issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/LSYS/forestplot#background-and-additional-resources" rel="noopener noreferrer"&gt;Background and Additional Resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/LSYS/forestplot#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;



&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;a href="https://github.com/LSYS/forestplot#installation" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FLSYS%2Fforestplot%2Fmain%2Fdocs%2Fimages%2Fpin.svg" alt=""&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Install from PyPI&lt;br&gt;
&lt;a href="https://pypi.org/project/forestplot/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/16843d18119ee2c5bc766cf87fe215d8ee5be2c9459b9fcfc48ea20feae0aaa5/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f666f72657374706c6f743f636f6c6f723d626c7565266c6162656c3d50795049266c6f676f3d70797069266c6f676f436f6c6f723d7768697465" alt="PyPI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pip install forestplot&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Install from conda-forge&lt;br&gt;
&lt;a href="https://anaconda.org/conda-forge/forestplot" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ba047ae0412979044321cc9a9070a804627c6a66d26375bee790fc39c343ff47/68747470733a2f2f696d672e736869656c64732e696f2f636f6e64612f766e2f636f6e64612d666f7267652f666f72657374706c6f743f6c6f676f3d636f6e64612d666f726765266c6f676f436f6c6f723d7768697465" alt="Conda (channel only)"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;conda install forestplot&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Install from source&lt;br&gt;
&lt;a href="https://github.com/LSYS/forestplot/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/01f8511ccb6696d855fc99ab7dab1a786fa0da58c5f14fe192ce833ffd6aa972/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6c7379732f666f72657374706c6f743f636f6c6f723d626c7565266c6162656c3d4c617465737425323072656c65617365" alt="GitHub release (latest by date)"&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/LSYS/forestplot.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; forestplot
pip install &lt;span class="pl-c1"&gt;.&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Developer installation&lt;br&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/LSYS/forestplot.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; forestplot
pip install -r requirements_dev.txt

make lint
make &lt;span class="pl-c1"&gt;test&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;(&lt;a href="https://github.com/LSYS/forestplot#top" rel="noopener noreferrer"&gt;back to top&lt;/a&gt;)&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;a href="https://github.com/LSYS/forestplot#quick-start" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FLSYS%2Fforestplot%2Fmain%2Fdocs%2Fimages%2Fpin.svg" alt=""&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-python notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s1"&gt;forestplot&lt;/span&gt; &lt;span class="pl-k"&gt;as&lt;/span&gt; &lt;span class="pl-s1"&gt;fp&lt;/span&gt;
&lt;span class="pl-s1"&gt;df&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/LSYS/forestplot" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>datascience</category>
      <category>opensource</category>
      <category>python</category>
      <category>analytics</category>
    </item>
  </channel>
</rss>
