mirror of
https://github.com/boostorg/histogram.git
synced 2026-01-30 20:02:13 +00:00
167 lines
12 KiB
HTML
167 lines
12 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<title>Tutorial — histogram 1.0 documentation</title>
|
|
|
|
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
|
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
|
|
|
<script type="text/javascript">
|
|
var DOCUMENTATION_OPTIONS = {
|
|
URL_ROOT: './',
|
|
VERSION: '1.0',
|
|
COLLAPSE_INDEX: false,
|
|
FILE_SUFFIX: '.html',
|
|
HAS_SOURCE: false
|
|
};
|
|
</script>
|
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
|
<link rel="top" title="histogram 1.0 documentation" href="index.html" />
|
|
<link rel="next" title="Notes" href="notes.html" />
|
|
<link rel="prev" title="Introduction" href="intro.html" />
|
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
|
|
|
</head>
|
|
<body role="document">
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<div class="section" id="tutorial">
|
|
<h1>Tutorial<a class="headerlink" href="#tutorial" title="Permalink to this headline">¶</a></h1>
|
|
<div class="section" id="example-1-1d-histogram-in-c">
|
|
<h2>Example 1: 1d-histogram in C++<a class="headerlink" href="#example-1-1d-histogram-in-c" title="Permalink to this headline">¶</a></h2>
|
|
<p>How to make a 1d-histogram in C++ and to fill it:</p>
|
|
<div class="highlight-cpp"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf"><boost/histogram/histogram.hpp></span><span class="cp"></span>
|
|
<span class="cp">#include</span> <span class="cpf"><boost/histogram/axis.hpp></span><span class="cp"></span>
|
|
<span class="cp">#include</span> <span class="cpf"><iostream></span><span class="cp"></span>
|
|
<span class="cp">#include</span> <span class="cpf"><cmath></span><span class="cp"></span>
|
|
|
|
<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">namespace</span> <span class="n">bh</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">histogram</span><span class="p">;</span>
|
|
|
|
<span class="c1">// create histogram</span>
|
|
<span class="n">bh</span><span class="o">::</span><span class="n">histogram</span> <span class="n">h</span><span class="p">(</span><span class="n">bh</span><span class="o">::</span><span class="n">regular_axis</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">2.0</span><span class="p">,</span> <span class="s">"x"</span><span class="p">));</span>
|
|
|
|
<span class="c1">// fill histogram</span>
|
|
<span class="n">h</span><span class="p">.</span><span class="n">fill</span><span class="p">(</span><span class="o">-</span><span class="mf">1.0</span><span class="p">);</span>
|
|
<span class="n">h</span><span class="p">.</span><span class="n">fill</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">);</span>
|
|
<span class="n">h</span><span class="p">.</span><span class="n">fill</span><span class="p">(</span><span class="mf">1.1</span><span class="p">);</span>
|
|
|
|
<span class="c1">// fill histogram with weighted count</span>
|
|
<span class="n">h</span><span class="p">.</span><span class="n">wfill</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">5.0</span><span class="p">);</span>
|
|
|
|
<span class="c1">// print counts and variance estimate to stdout,</span>
|
|
<span class="c1">// including underflow and overflow bins</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span> <span class="n">i</span> <span class="o"><=</span> <span class="n">h</span><span class="p">.</span><span class="n">bins</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="s">"bin "</span> <span class="o"><<</span> <span class="n">i</span> <span class="o"><<</span> <span class="s">" "</span> <span class="o"><<</span> <span class="n">h</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
|
<span class="o"><<</span> <span class="s">" +/- "</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">sqrt</span><span class="p">(</span><span class="n">h</span><span class="p">.</span><span class="n">variance</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
|
|
<span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="example-2-2d-histogram-in-python">
|
|
<h2>Example 2: 2d-histogram in Python<a class="headerlink" href="#example-2-2d-histogram-in-python" title="Permalink to this headline">¶</a></h2>
|
|
<p>How to make a 2d-histogram in Python and to fill it using a Numpy array:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">histogram</span> <span class="kn">as</span> <span class="nn">bh</span>
|
|
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
|
|
|
<span class="c1"># create histogram without underflow and overflow bins</span>
|
|
<span class="n">h</span> <span class="o">=</span> <span class="n">bh</span><span class="o">.</span><span class="n">histogram</span><span class="p">(</span><span class="n">bh</span><span class="o">.</span><span class="n">regular_axis</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">5.0</span><span class="p">,</span> <span class="s2">"radius"</span><span class="p">,</span>
|
|
<span class="n">uoflow</span><span class="o">=</span><span class="bp">False</span><span class="p">),</span>
|
|
<span class="n">bh</span><span class="o">.</span><span class="n">polar_axis</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="s2">"phi"</span><span class="p">))</span>
|
|
|
|
<span class="c1"># fill histogram</span>
|
|
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
<span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
<span class="n">rphi</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">((</span><span class="mi">1000</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span>
|
|
<span class="n">rphi</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="n">y</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">**</span> <span class="mf">0.5</span>
|
|
<span class="n">rphi</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arctan2</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
|
<span class="n">h</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">rphi</span><span class="p">)</span>
|
|
|
|
<span class="c1"># access counts as a numpy array (no data is copied)</span>
|
|
<span class="n">count_matrix</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>
|
|
|
|
<span class="k">print</span> <span class="n">count_matrix</span>
|
|
</pre></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
<div class="sphinxsidebarwrapper">
|
|
<h1 class="logo"><a href="index.html">histogram</a></h1>
|
|
|
|
|
|
|
|
|
|
|
|
<p>
|
|
<iframe src="https://ghbtns.com/github-btn.html?user=HDembinski&repo=histogram&type=watch&count=true&size=large"
|
|
allowtransparency="true" frameborder="0" scrolling="0" width="200px" height="35px"></iframe>
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Navigation</h3>
|
|
<ul class="current">
|
|
<li class="toctree-l1"><a class="reference internal" href="motivation.html">Motivation</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
|
<li class="toctree-l1 current"><a class="current reference internal" href="#">Tutorial</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="#example-1-1d-histogram-in-c">Example 1: 1d-histogram in C++</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#example-2-2d-histogram-in-python">Example 2: 2d-histogram in Python</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="notes.html">Notes</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="types.html">Types</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="rationale.html">Rationale</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="references.html">References</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="changelog.html">CHANGELOG</a></li>
|
|
</ul>
|
|
|
|
<div class="relations">
|
|
<h3>Related Topics</h3>
|
|
<ul>
|
|
<li><a href="index.html">Documentation overview</a><ul>
|
|
<li>Previous: <a href="intro.html" title="previous chapter">Introduction</a></li>
|
|
<li>Next: <a href="notes.html" title="next chapter">Notes</a></li>
|
|
</ul></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="footer">
|
|
©2016, Hans Dembinski.
|
|
|
|
|
|
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.1</a>
|
|
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.7</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
</html> |