<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Clustered DotPlot — Clustered_DotPlot • scCustomize</title><!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/flatly/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous"><script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css"><script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous"><!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet"><script src="../pkgdown.js"></script><meta property="og:title" content="Clustered DotPlot — Clustered_DotPlot"><meta property="og:description" content="Clustered DotPlots using ComplexHeatmap"><!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--></head><body data-spy="scroll" data-target="#toc">
    

    <div class="container template-reference-topic">
      <header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <span class="navbar-brand">
        <a class="navbar-link" href="../index.html">scCustomize</a>
        <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="">2.1.2</span>
      </span>
    </div>

    <div id="navbar" class="navbar-collapse collapse">
      <ul class="nav navbar-nav"><li>
  <a href="../index.html">Getting Started</a>
</li>
<li>
  <a href="../articles/Installation.html">Install</a>
</li>
<li class="dropdown">
  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
    Vignettes
     
    <span class="caret"></span>
  </a>
  <ul class="dropdown-menu" role="menu"><li class="dropdown-header">Plotting Vignettes</li>
    <li>
      <a href="../articles/Gene_Expression_Plotting.html">Plotting #1: General Analysis Plots</a>
    </li>
    <li>
      <a href="../articles/QC_Plots.html">Plotting #2: QC Plots</a>
    </li>
    <li>
      <a href="../articles/Sequencing_QC_Plots.html">Plotting #3: Sequencing QC Plots/Analysis</a>
    </li>
    <li>
      <a href="../articles/Iterative_Plotting.html">Plotting #4: Iterative Plotting Functions</a>
    </li>
    <li>
      <a href="../articles/Color_Palettes.html">Customized Color Palettes &amp; Themes</a>
    </li>
    <li class="divider">
    <li class="dropdown-header">Helpers &amp; Utilities</li>
    <li>
      <a href="../articles/Helpers_and_Utilities.html">General Helpers &amp; Utilities</a>
    </li>
    <li>
      <a href="../articles/Read_and_Write_Functions.html">Read &amp; Write Data Functions</a>
    </li>
    <li>
      <a href="../articles/Object_Conversion.html">Object/Assay Format Conversion</a>
    </li>
    <li>
      <a href="../articles/Markers_and_Cluster_Annotation.html">Marker Identification &amp; Cluster Annotation Helpers</a>
    </li>
    <li>
      <a href="../articles/Statistics.html">Statistics Functions</a>
    </li>
    <li>
      <a href="../articles/Update_Gene_Symbols.html">Updating Gene Symbols</a>
    </li>
    <li>
      <a href="../articles/Misc_Functions.html">Misc Functions</a>
    </li>
    <li class="divider">
    <li class="dropdown-header">Other Package Interactivity/Functions</li>
    <li>
      <a href="../articles/LIGER_Functions.html">LIGER Plotting &amp; Functionality</a>
    </li>
    <li>
      <a href="../articles/Cell_Bender_Functions.html">Cell Bender Functionality &amp; Plotting</a>
    </li>
  </ul></li>
<li>
  <a href="../news/index.html">News/Changelog</a>
</li>
<li>
  <a href="../reference/index.html">Reference</a>
</li>
<li>
  <a href="../articles/FAQ.html">FAQ</a>
</li>
      </ul><ul class="nav navbar-nav navbar-right"><li>
  <a href="https://github.com/samuel-marsh/scCustomize/" class="external-link">
    <span class="fab fa-github fa-lg"></span>
     
  </a>
</li>
      </ul></div><!--/.nav-collapse -->
  </div><!--/.container -->
</div><!--/.navbar -->

      

      </header><div class="row">
  <div class="col-md-9 contents">
    <div class="page-header">
    <h1>Clustered DotPlot</h1>
    <small class="dont-index">Source: <a href="https://github.com/samuel-marsh/scCustomize/blob/HEAD/R/Seurat_Plotting.R" class="external-link"><code>R/Seurat_Plotting.R</code></a></small>
    <div class="hidden name"><code>Clustered_DotPlot.Rd</code></div>
    </div>

    <div class="ref-description">
    <p>Clustered DotPlots using ComplexHeatmap</p>
    </div>

    <div id="ref-usage">
    <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">Clustered_DotPlot</span><span class="op">(</span></span>
<span>  <span class="va">seurat_object</span>,</span>
<span>  <span class="va">features</span>,</span>
<span>  split.by <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  colors_use_exp <span class="op">=</span> <span class="va">viridis_plasma_dark_high</span>,</span>
<span>  exp_color_min <span class="op">=</span> <span class="op">-</span><span class="fl">2</span>,</span>
<span>  exp_color_middle <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  exp_color_max <span class="op">=</span> <span class="fl">2</span>,</span>
<span>  exp_value_type <span class="op">=</span> <span class="st">"scaled"</span>,</span>
<span>  print_exp_quantiles <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  colors_use_idents <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  x_lab_rotate <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span>  plot_padding <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  flip <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  k <span class="op">=</span> <span class="fl">1</span>,</span>
<span>  feature_km_repeats <span class="op">=</span> <span class="fl">1000</span>,</span>
<span>  ident_km_repeats <span class="op">=</span> <span class="fl">1000</span>,</span>
<span>  row_label_size <span class="op">=</span> <span class="fl">8</span>,</span>
<span>  row_label_fontface <span class="op">=</span> <span class="st">"plain"</span>,</span>
<span>  grid_color <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  cluster_feature <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span>  cluster_ident <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span>  column_label_size <span class="op">=</span> <span class="fl">8</span>,</span>
<span>  legend_label_size <span class="op">=</span> <span class="fl">10</span>,</span>
<span>  legend_title_size <span class="op">=</span> <span class="fl">10</span>,</span>
<span>  raster <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  plot_km_elbow <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span>  elbow_kmax <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  assay <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  group.by <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  idents <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  show_parent_dend_line <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span>  ggplot_default_colors <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span>  color_seed <span class="op">=</span> <span class="fl">123</span>,</span>
<span>  seed <span class="op">=</span> <span class="fl">123</span></span>
<span><span class="op">)</span></span></code></pre></div>
    </div>

    <div id="arguments">
    <h2>Arguments</h2>
    <dl><dt>seurat_object</dt>
<dd><p>Seurat object name.</p></dd>


<dt>features</dt>
<dd><p>Features to plot.</p></dd>


<dt>split.by</dt>
<dd><p>Variable in <code>@meta.data</code> to split the identities plotted by.</p></dd>


<dt>colors_use_exp</dt>
<dd><p>Color palette to use for plotting expression scale.  Default is <code>viridis::plasma(n = 20, direction = -1)</code>.</p></dd>


<dt>exp_color_min</dt>
<dd><p>Minimum scaled average expression threshold (everything smaller will be set to this).
Default is -2.</p></dd>


<dt>exp_color_middle</dt>
<dd><p>What scaled expression value to use for the middle of the provided <code>colors_use_exp</code>.
By default will be set to value in middle of <code>exp_color_min</code> and <code>exp_color_max</code>.</p></dd>


<dt>exp_color_max</dt>
<dd><p>Minimum scaled average expression threshold (everything smaller will be set to this).
Default is 2.</p></dd>


<dt>exp_value_type</dt>
<dd><p>Whether to plot average normalized expression or
scaled average normalized expression.  Only valid when <code>split.by</code> is provided.</p></dd>


<dt>print_exp_quantiles</dt>
<dd><p>Whether to print the quantiles of expression data in addition to plots.
Default is FALSE.  NOTE: These values will be altered by choices of <code>exp_color_min</code> and <code>exp_color_min</code>
if there are values below or above those cutoffs, respectively.</p></dd>


<dt>colors_use_idents</dt>
<dd><p>specify color palette to used for identity labels.  By default if
number of levels plotted is less than or equal to 36 it will use "polychrome" and if greater than 36
will use "varibow" with shuffle = TRUE both from <code>DiscretePalette_scCustomize</code>.</p></dd>


<dt>x_lab_rotate</dt>
<dd><p>How to rotate column labels.  By default set to <code>TRUE</code> which rotates labels 45 degrees.
If set <code>FALSE</code> rotation is set to 0 degrees.  Users can also supply custom angle for text rotation.</p></dd>


<dt>plot_padding</dt>
<dd><p>if plot needs extra white space padding so no plot or labels are cutoff.
The parameter accepts TRUE or numeric vector of length 4.  If TRUE padding will be set to
c(2, 10, 0 0) (bottom, left, top, right).  Can also be customized further with numeric
vector of length 4 specifying the amount of padding in millimeters.
Default is NULL, no padding.</p></dd>


<dt>flip</dt>
<dd><p>logical, whether to flip the axes of final plot.  Default is FALSE; rows = features and
columns = idents.</p></dd>


<dt>k</dt>
<dd><p>Value to use for k-means clustering on features  Sets (km) parameter in <code><a href="https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html" class="external-link">ComplexHeatmap::Heatmap()</a></code>.
From <code><a href="https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html" class="external-link">ComplexHeatmap::Heatmap()</a></code>: Apply k-means clustering on rows. If the value is larger than 1, the
heatmap will be split by rows according to the k-means clustering. For each row slice, hierarchical
clustering is still applied with parameters above.</p></dd>


<dt>feature_km_repeats</dt>
<dd><p>Number of k-means runs to get a consensus k-means clustering for features.
Note if <code>feature_km_repeats</code> is set to value greater than one, the final number of groups might be
smaller than row_km, but this might mean the original row_km is not a good choice.  Default is 1000.</p></dd>


<dt>ident_km_repeats</dt>
<dd><p>Number of k-means runs to get a consensus k-means clustering. Similar to
<code>feature_km_repeats</code>.  Default is 1000.</p></dd>


<dt>row_label_size</dt>
<dd><p>Size of the feature labels.  Provided to <code>row_names_gp</code> in Heatmap call.</p></dd>


<dt>row_label_fontface</dt>
<dd><p>Fontface to use for row labels.  Provided to <code>row_names_gp</code> in Heatmap call.</p></dd>


<dt>grid_color</dt>
<dd><p>color to use for heatmap grid.  Default is NULL which "removes" grid by using NA color.</p></dd>


<dt>cluster_feature</dt>
<dd><p>logical, whether to cluster and reorder feature axis.  Default is TRUE.</p></dd>


<dt>cluster_ident</dt>
<dd><p>logical, whether to cluster and reorder identity axis.  Default is TRUE.</p></dd>


<dt>column_label_size</dt>
<dd><p>Size of the feature labels.  Provided to <code>column_names_gp</code> in Heatmap call.</p></dd>


<dt>legend_label_size</dt>
<dd><p>Size of the legend text labels.  Provided to <code>labels_gp</code> in Heatmap legend call.</p></dd>


<dt>legend_title_size</dt>
<dd><p>Sise of the legend title text labels.  Provided to <code>title_gp</code> in Heatmap legend call.</p></dd>


<dt>raster</dt>
<dd><p>Logical, whether to render in raster format (faster plotting, smaller files).  Default is FALSE.</p></dd>


<dt>plot_km_elbow</dt>
<dd><p>Logical, whether or not to return the Sum Squared Error Elbow Plot for k-means clustering.
Estimating elbow of this plot is one way to determine "optimal" value for <code>k</code>.
Based on: <a href="https://stackoverflow.com/a/15376462/15568251" class="external-link">https://stackoverflow.com/a/15376462/15568251</a>.</p></dd>


<dt>elbow_kmax</dt>
<dd><p>The maximum value of k to use for <code>plot_km_elbow</code>.  Suggest setting larger value so the
true shape of plot can be observed.  Value must be 1 less than number of features provided.  If NULL parameter
will be set dependent on length of feature list up to <code>elbow_kmax = 20</code>.</p></dd>


<dt>assay</dt>
<dd><p>Name of assay to use, defaults to the active assay.</p></dd>


<dt>group.by</dt>
<dd><p>Group (color) cells in different ways (for example, orig.ident).</p></dd>


<dt>idents</dt>
<dd><p>Which classes to include in the plot (default is all).</p></dd>


<dt>show_parent_dend_line</dt>
<dd><p>Logical, Sets parameter of same name in <code><a href="https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html" class="external-link">ComplexHeatmap::Heatmap()</a></code>.
From <code><a href="https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html" class="external-link">ComplexHeatmap::Heatmap()</a></code>: When heatmap is split, whether to add a dashed line to mark parent
dendrogram and children dendrograms.  Default is TRUE.</p></dd>


<dt>ggplot_default_colors</dt>
<dd><p>logical.  If <code>colors_use = NULL</code>, Whether or not to return plot using
default ggplot2 "hue" palette instead of default "polychrome" or "varibow" palettes.</p></dd>


<dt>color_seed</dt>
<dd><p>random seed for the "varibow" palette shuffle if <code>colors_use = NULL</code> and number of
groups plotted is greater than 36.  Default = 123.</p></dd>


<dt>seed</dt>
<dd><p>Sets seed for reproducible plotting (ComplexHeatmap plot).</p></dd>

</dl></div>
    <div id="value">
    <h2>Value</h2>
    

<p>A ComplexHeatmap or if plot_km_elbow = TRUE a list containing ggplot2 object and ComplexHeatmap.</p>
    </div>
    <div id="references">
    <h2>References</h2>
    <p><a href="https://divingintogeneticsandgenomics.rbind.io/post/clustered-dotplot-for-single-cell-rnaseq/" class="external-link">https://divingintogeneticsandgenomics.rbind.io/post/clustered-dotplot-for-single-cell-rnaseq/</a></p>
    </div>
    <div id="see-also">
    <h2>See also</h2>
    <div class="dont-index"><p><a href="https://twitter.com/tangming2005" class="external-link">https://twitter.com/tangming2005</a></p></div>
    </div>
    <div id="author">
    <h2>Author</h2>
    <p>Ming Tang (Original Code), Sam Marsh (Wrap single function, added/modified functionality)</p>
    </div>

    <div id="ref-examples">
    <h2>Examples</h2>
    <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \donttest{</span></span></span>
<span class="r-in"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://satijalab.org/seurat" class="external-link">Seurat</a></span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu">Clustered_DotPlot</span><span class="op">(</span>seurat_object <span class="op">=</span> <span class="va">pbmc_small</span>, features <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"CD3E"</span>, <span class="st">"CD8"</span>, <span class="st">"GZMB"</span>, <span class="st">"MS4A1"</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> <span class="warning">Warning: </span>The following features were omitted as they were not found:</span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> <span style="color: #00BBBB;">ℹ</span> <span style="color: #00BB00;">CD8</span></span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> <span class="warning">Warning: </span>Scaling data with a low number of groups may produce misleading results</span>
<span class="r-plt img"><img src="Clustered_DotPlot-1.png" alt="" width="700" height="433"></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [[1]]</span>
<span class="r-plt img"><img src="Clustered_DotPlot-2.png" alt="" width="700" height="433"></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [[2]]</span>
<span class="r-plt img"><img src="Clustered_DotPlot-3.png" alt="" width="700" height="433"></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> </span>
<span class="r-in"><span><span class="co"># }</span></span></span>
<span class="r-in"><span></span></span>
</code></pre></div>
    </div>
  </div>
  <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
    <nav id="toc" data-toggle="toc" class="sticky-top"><h2 data-toc-skip>Contents</h2>
    </nav></div>
</div>


      <footer><div class="copyright">
  <p></p><p>Developed by Samuel Marsh.</p>
</div>

<div class="pkgdown">
  <p></p><p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.0.7.</p>
</div>

      </footer></div>

  


  

  </body></html>

