Skip to content

Repository files navigation

image

nbplot

Command-line utility to quickly plot files in a Jupyter notebook.

Tools like pandas+matplotlib are very powerful, but it takes some time to plot a file from scratch: run a Jupyter notebook instance, create a notebook, import the modules, go grab the path of the file, remember how to call read_csv properly, create the matplotlib figure, etc. The goal of nbplot is to remove that friction and make this as easy as launching a dedicated tool like gnuplot.

Demo

nbplot_demo

Installation

Tested on Python 3.8 to 3.12, but it likely works on more versions.

pip install nbplot

Features

  • Can be fully configured via templates. A template is just a notebook with some special variables that will get replaced.

  • Ships with a default template for numpy+matplotlib and one for pandas+matplotlib.

  • Can guess the column delimiter of text files.

  • Data can be directly read from stdin, and the string will be embedded in the generated notebook.

  • Will try to reuse an existing instance of notebook server (inspired by nbopen).

Examples

Plots

$ cat mydata.txt
1 1
2 4
3 9
4 16
$ nbplot mydata.txt
  • Generates a notebook ~/nbplot/{{date}}-mydata.ipynb with the code to load mydata.txt with pandas.read_csv and the guessed space delimiter.

  • Opens the notebook in the browser, reusing existing instances of Jupyter if possible, starting a new one otherwise.


$ nbplot -t numpy mydata.txt
  • Generates the notebook with the numpy template, using numpy.genfromtxt to load the file.

$ nbplot mydata1.txt mydata2.txt [...]
  • Generates a notebook that loads all the input files in the same plot.

$ for i in `seq -10 10`; do echo $i $((i*i)); done | nbplot -
  • Reads the data to plot from stdin and generates a notebook to plot it, with the data embedded as a string.

nbplot_stdin

Images

$ nbplot -t imshow image1.png image2.jpg
  • Uses the imshow template to generate a notebook that loads and displays the 2 images with matplotlib imshow and PIL.Image.

$ nbplot -t imshow paste-image
  • Use the special paste-image filename to directly plot an image from the clipboard. It will get embedded into the notebook via a base64 string.

nbplot_images_clipboard


$ nbplot -t daltonize Ishihara_9_from_wikipedia.png
  • The daltonize template generates a notebook with the same image rendered with various color filters that can either help color-blind people to better see the contrasts, or designers to simulate different kinds of color blindness. Powered by the daltonize module.

nbplot_daltonize

Empty notebook, no input files

$ nbplot -t empty -o empty.ipynb
  • Creates an empty notebook in the current folder with the name empty.ipynb and opens it.

Creating a custom template

Templates are just regular .ipynb notebooks, with special variables like the filenames to plot that will get replaced when generating the output notebook.

The easiest way to create a custom template is to copy and adapt an existing one from the templates/ folder of the repository, and put it in your ~/.nbplot/ folder, next to the configuration file. The name of the template is defined in metadata dictionary defined in the special cell that stars with a # [[nbplot]] template line.

The search for template files is recursive, so it is possible to manage custom templates in e.g. an external repository and git clone it in a subfolder under ~/.nbplot.

Configuring the default behavior

When first launched, nbplot generates a configuration file in ~/.nbplot/config.ipynb. It is also a notebook, and the config dictionary will be read after evaluating the cell. The main options are the default template, the folder from which to start the notebook instance, and the folder where the generated plots will be saved.

ChangeLog

v0.3 (April 6th, 2021)

  • Add an empty template and accept to run without input files
  • Fix the recursive globbing of user templates to follow symlinks
  • Fix the image type conversion in the daltonize template

v0.2 (April 4th, 2021)

New features:

  • Add an imshow template to show images with matplotlib.imshow.
  • Add a daltonize template to show images enhanced for colorblind people.
  • Glob templates recursively in ~/.nbplot. This makes it possible to manage private templates via a git cloned subfolder.
  • Add the paste-image special filename to grab an image from the clipboard and embed its content in the notebook.

Fixes:

  • Fix the metadata to automatically load a Python kernel.
  • Don't fail when trying to determine the delimiter on binary files.
  • pandas: handle files with multiple spaces / tabs between columns.

v0.1 (April 1st, 2021)

Initial release.

About

Command-line utility to quickly plot files in a Jupyter notebook.

Topics

Resources

Contributing

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - nburrus/nbplot: Command-line utility to quickly plot files in a Jupyter notebook. · GitHub
Skip to content

Repository files navigation

image

nbplot

Command-line utility to quickly plot files in a Jupyter notebook.

Tools like pandas+matplotlib are very powerful, but it takes some time to plot a file from scratch: run a Jupyter notebook instance, create a notebook, import the modules, go grab the path of the file, remember how to call read_csv properly, create the matplotlib figure, etc. The goal of nbplot is to remove that friction and make this as easy as launching a dedicated tool like gnuplot.

Demo

nbplot_demo

Installation

Tested on Python 3.8 to 3.12, but it likely works on more versions.

pip install nbplot

Features

  • Can be fully configured via templates. A template is just a notebook with some special variables that will get replaced.

  • Ships with a default template for numpy+matplotlib and one for pandas+matplotlib.

  • Can guess the column delimiter of text files.

  • Data can be directly read from stdin, and the string will be embedded in the generated notebook.

  • Will try to reuse an existing instance of notebook server (inspired by nbopen).

Examples

Plots

$ cat mydata.txt
1 1
2 4
3 9
4 16
$ nbplot mydata.txt
  • Generates a notebook ~/nbplot/{{date}}-mydata.ipynb with the code to load mydata.txt with pandas.read_csv and the guessed space delimiter.

  • Opens the notebook in the browser, reusing existing instances of Jupyter if possible, starting a new one otherwise.


$ nbplot -t numpy mydata.txt
  • Generates the notebook with the numpy template, using numpy.genfromtxt to load the file.

$ nbplot mydata1.txt mydata2.txt [...]
  • Generates a notebook that loads all the input files in the same plot.

$ for i in `seq -10 10`; do echo $i $((i*i)); done | nbplot -
  • Reads the data to plot from stdin and generates a notebook to plot it, with the data embedded as a string.

nbplot_stdin

Images

$ nbplot -t imshow image1.png image2.jpg
  • Uses the imshow template to generate a notebook that loads and displays the 2 images with matplotlib imshow and PIL.Image.

$ nbplot -t imshow paste-image
  • Use the special paste-image filename to directly plot an image from the clipboard. It will get embedded into the notebook via a base64 string.

nbplot_images_clipboard


$ nbplot -t daltonize Ishihara_9_from_wikipedia.png
  • The daltonize template generates a notebook with the same image rendered with various color filters that can either help color-blind people to better see the contrasts, or designers to simulate different kinds of color blindness. Powered by the daltonize module.

nbplot_daltonize

Empty notebook, no input files

$ nbplot -t empty -o empty.ipynb
  • Creates an empty notebook in the current folder with the name empty.ipynb and opens it.

Creating a custom template

Templates are just regular .ipynb notebooks, with special variables like the filenames to plot that will get replaced when generating the output notebook.

The easiest way to create a custom template is to copy and adapt an existing one from the templates/ folder of the repository, and put it in your ~/.nbplot/ folder, next to the configuration file. The name of the template is defined in metadata dictionary defined in the special cell that stars with a # [[nbplot]] template line.

The search for template files is recursive, so it is possible to manage custom templates in e.g. an external repository and git clone it in a subfolder under ~/.nbplot.

Configuring the default behavior

When first launched, nbplot generates a configuration file in ~/.nbplot/config.ipynb. It is also a notebook, and the config dictionary will be read after evaluating the cell. The main options are the default template, the folder from which to start the notebook instance, and the folder where the generated plots will be saved.

ChangeLog

v0.3 (April 6th, 2021)

  • Add an empty template and accept to run without input files
  • Fix the recursive globbing of user templates to follow symlinks
  • Fix the image type conversion in the daltonize template

v0.2 (April 4th, 2021)

New features:

  • Add an imshow template to show images with matplotlib.imshow.
  • Add a daltonize template to show images enhanced for colorblind people.
  • Glob templates recursively in ~/.nbplot. This makes it possible to manage private templates via a git cloned subfolder.
  • Add the paste-image special filename to grab an image from the clipboard and embed its content in the notebook.

Fixes:

  • Fix the metadata to automatically load a Python kernel.
  • Don't fail when trying to determine the delimiter on binary files.
  • pandas: handle files with multiple spaces / tabs between columns.

v0.1 (April 1st, 2021)

Initial release.

About

Command-line utility to quickly plot files in a Jupyter notebook.

Topics

Resources

Contributing

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nburrus/nbplot: Command-line utility to quickly plot files in a Jupyter notebook. · GitHub
Skip to content

Repository files navigation

image

nbplot

Command-line utility to quickly plot files in a Jupyter notebook.

Tools like pandas+matplotlib are very powerful, but it takes some time to plot a file from scratch: run a Jupyter notebook instance, create a notebook, import the modules, go grab the path of the file, remember how to call read_csv properly, create the matplotlib figure, etc. The goal of nbplot is to remove that friction and make this as easy as launching a dedicated tool like gnuplot.

Demo

nbplot_demo

Installation

Tested on Python 3.8 to 3.12, but it likely works on more versions.

pip install nbplot

Features

  • Can be fully configured via templates. A template is just a notebook with some special variables that will get replaced.

  • Ships with a default template for numpy+matplotlib and one for pandas+matplotlib.

  • Can guess the column delimiter of text files.

  • Data can be directly read from stdin, and the string will be embedded in the generated notebook.

  • Will try to reuse an existing instance of notebook server (inspired by nbopen).

Examples

Plots

$ cat mydata.txt
1 1
2 4
3 9
4 16
$ nbplot mydata.txt
  • Generates a notebook ~/nbplot/{{date}}-mydata.ipynb with the code to load mydata.txt with pandas.read_csv and the guessed space delimiter.

  • Opens the notebook in the browser, reusing existing instances of Jupyter if possible, starting a new one otherwise.


$ nbplot -t numpy mydata.txt
  • Generates the notebook with the numpy template, using numpy.genfromtxt to load the file.

$ nbplot mydata1.txt mydata2.txt [...]
  • Generates a notebook that loads all the input files in the same plot.

$ for i in `seq -10 10`; do echo $i $((i*i)); done | nbplot -
  • Reads the data to plot from stdin and generates a notebook to plot it, with the data embedded as a string.

nbplot_stdin

Images

$ nbplot -t imshow image1.png image2.jpg
  • Uses the imshow template to generate a notebook that loads and displays the 2 images with matplotlib imshow and PIL.Image.

$ nbplot -t imshow paste-image
  • Use the special paste-image filename to directly plot an image from the clipboard. It will get embedded into the notebook via a base64 string.

nbplot_images_clipboard


$ nbplot -t daltonize Ishihara_9_from_wikipedia.png
  • The daltonize template generates a notebook with the same image rendered with various color filters that can either help color-blind people to better see the contrasts, or designers to simulate different kinds of color blindness. Powered by the daltonize module.

nbplot_daltonize

Empty notebook, no input files

$ nbplot -t empty -o empty.ipynb
  • Creates an empty notebook in the current folder with the name empty.ipynb and opens it.

Creating a custom template

Templates are just regular .ipynb notebooks, with special variables like the filenames to plot that will get replaced when generating the output notebook.

The easiest way to create a custom template is to copy and adapt an existing one from the templates/ folder of the repository, and put it in your ~/.nbplot/ folder, next to the configuration file. The name of the template is defined in metadata dictionary defined in the special cell that stars with a # [[nbplot]] template line.

The search for template files is recursive, so it is possible to manage custom templates in e.g. an external repository and git clone it in a subfolder under ~/.nbplot.

Configuring the default behavior

When first launched, nbplot generates a configuration file in ~/.nbplot/config.ipynb. It is also a notebook, and the config dictionary will be read after evaluating the cell. The main options are the default template, the folder from which to start the notebook instance, and the folder where the generated plots will be saved.

ChangeLog

v0.3 (April 6th, 2021)

  • Add an empty template and accept to run without input files
  • Fix the recursive globbing of user templates to follow symlinks
  • Fix the image type conversion in the daltonize template

v0.2 (April 4th, 2021)

New features:

  • Add an imshow template to show images with matplotlib.imshow.
  • Add a daltonize template to show images enhanced for colorblind people.
  • Glob templates recursively in ~/.nbplot. This makes it possible to manage private templates via a git cloned subfolder.
  • Add the paste-image special filename to grab an image from the clipboard and embed its content in the notebook.

Fixes:

  • Fix the metadata to automatically load a Python kernel.
  • Don't fail when trying to determine the delimiter on binary files.
  • pandas: handle files with multiple spaces / tabs between columns.

v0.1 (April 1st, 2021)

Initial release.

About

Command-line utility to quickly plot files in a Jupyter notebook.

Topics

Resources

Contributing

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nburrus/nbplot: Command-line utility to quickly plot files in a Jupyter notebook. · GitHub
Skip to content

Repository files navigation

image

nbplot

Command-line utility to quickly plot files in a Jupyter notebook.

Tools like pandas+matplotlib are very powerful, but it takes some time to plot a file from scratch: run a Jupyter notebook instance, create a notebook, import the modules, go grab the path of the file, remember how to call read_csv properly, create the matplotlib figure, etc. The goal of nbplot is to remove that friction and make this as easy as launching a dedicated tool like gnuplot.

Demo

nbplot_demo

Installation

Tested on Python 3.8 to 3.12, but it likely works on more versions.

pip install nbplot

Features

  • Can be fully configured via templates. A template is just a notebook with some special variables that will get replaced.

  • Ships with a default template for numpy+matplotlib and one for pandas+matplotlib.

  • Can guess the column delimiter of text files.

  • Data can be directly read from stdin, and the string will be embedded in the generated notebook.

  • Will try to reuse an existing instance of notebook server (inspired by nbopen).

Examples

Plots

$ cat mydata.txt
1 1
2 4
3 9
4 16
$ nbplot mydata.txt
  • Generates a notebook ~/nbplot/{{date}}-mydata.ipynb with the code to load mydata.txt with pandas.read_csv and the guessed space delimiter.

  • Opens the notebook in the browser, reusing existing instances of Jupyter if possible, starting a new one otherwise.


$ nbplot -t numpy mydata.txt
  • Generates the notebook with the numpy template, using numpy.genfromtxt to load the file.

$ nbplot mydata1.txt mydata2.txt [...]
  • Generates a notebook that loads all the input files in the same plot.

$ for i in `seq -10 10`; do echo $i $((i*i)); done | nbplot -
  • Reads the data to plot from stdin and generates a notebook to plot it, with the data embedded as a string.

nbplot_stdin

Images

$ nbplot -t imshow image1.png image2.jpg
  • Uses the imshow template to generate a notebook that loads and displays the 2 images with matplotlib imshow and PIL.Image.

$ nbplot -t imshow paste-image
  • Use the special paste-image filename to directly plot an image from the clipboard. It will get embedded into the notebook via a base64 string.

nbplot_images_clipboard


$ nbplot -t daltonize Ishihara_9_from_wikipedia.png
  • The daltonize template generates a notebook with the same image rendered with various color filters that can either help color-blind people to better see the contrasts, or designers to simulate different kinds of color blindness. Powered by the daltonize module.

nbplot_daltonize

Empty notebook, no input files

$ nbplot -t empty -o empty.ipynb
  • Creates an empty notebook in the current folder with the name empty.ipynb and opens it.

Creating a custom template

Templates are just regular .ipynb notebooks, with special variables like the filenames to plot that will get replaced when generating the output notebook.

The easiest way to create a custom template is to copy and adapt an existing one from the templates/ folder of the repository, and put it in your ~/.nbplot/ folder, next to the configuration file. The name of the template is defined in metadata dictionary defined in the special cell that stars with a # [[nbplot]] template line.

The search for template files is recursive, so it is possible to manage custom templates in e.g. an external repository and git clone it in a subfolder under ~/.nbplot.

Configuring the default behavior

When first launched, nbplot generates a configuration file in ~/.nbplot/config.ipynb. It is also a notebook, and the config dictionary will be read after evaluating the cell. The main options are the default template, the folder from which to start the notebook instance, and the folder where the generated plots will be saved.

ChangeLog

v0.3 (April 6th, 2021)

  • Add an empty template and accept to run without input files
  • Fix the recursive globbing of user templates to follow symlinks
  • Fix the image type conversion in the daltonize template

v0.2 (April 4th, 2021)

New features:

  • Add an imshow template to show images with matplotlib.imshow.
  • Add a daltonize template to show images enhanced for colorblind people.
  • Glob templates recursively in ~/.nbplot. This makes it possible to manage private templates via a git cloned subfolder.
  • Add the paste-image special filename to grab an image from the clipboard and embed its content in the notebook.

Fixes:

  • Fix the metadata to automatically load a Python kernel.
  • Don't fail when trying to determine the delimiter on binary files.
  • pandas: handle files with multiple spaces / tabs between columns.

v0.1 (April 1st, 2021)

Initial release.

About

Command-line utility to quickly plot files in a Jupyter notebook.

Topics

Resources

Contributing

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - nburrus/nbplot: Command-line utility to quickly plot files in a Jupyter notebook. · GitHub
Skip to content

Repository files navigation

image

nbplot

Command-line utility to quickly plot files in a Jupyter notebook.

Tools like pandas+matplotlib are very powerful, but it takes some time to plot a file from scratch: run a Jupyter notebook instance, create a notebook, import the modules, go grab the path of the file, remember how to call read_csv properly, create the matplotlib figure, etc. The goal of nbplot is to remove that friction and make this as easy as launching a dedicated tool like gnuplot.

Demo

nbplot_demo

Installation

Tested on Python 3.8 to 3.12, but it likely works on more versions.

pip install nbplot

Features

  • Can be fully configured via templates. A template is just a notebook with some special variables that will get replaced.

  • Ships with a default template for numpy+matplotlib and one for pandas+matplotlib.

  • Can guess the column delimiter of text files.

  • Data can be directly read from stdin, and the string will be embedded in the generated notebook.

  • Will try to reuse an existing instance of notebook server (inspired by nbopen).

Examples

Plots

$ cat mydata.txt
1 1
2 4
3 9
4 16
$ nbplot mydata.txt
  • Generates a notebook ~/nbplot/{{date}}-mydata.ipynb with the code to load mydata.txt with pandas.read_csv and the guessed space delimiter.

  • Opens the notebook in the browser, reusing existing instances of Jupyter if possible, starting a new one otherwise.


$ nbplot -t numpy mydata.txt
  • Generates the notebook with the numpy template, using numpy.genfromtxt to load the file.

$ nbplot mydata1.txt mydata2.txt [...]
  • Generates a notebook that loads all the input files in the same plot.

$ for i in `seq -10 10`; do echo $i $((i*i)); done | nbplot -
  • Reads the data to plot from stdin and generates a notebook to plot it, with the data embedded as a string.

nbplot_stdin

Images

$ nbplot -t imshow image1.png image2.jpg
  • Uses the imshow template to generate a notebook that loads and displays the 2 images with matplotlib imshow and PIL.Image.

$ nbplot -t imshow paste-image
  • Use the special paste-image filename to directly plot an image from the clipboard. It will get embedded into the notebook via a base64 string.

nbplot_images_clipboard


$ nbplot -t daltonize Ishihara_9_from_wikipedia.png
  • The daltonize template generates a notebook with the same image rendered with various color filters that can either help color-blind people to better see the contrasts, or designers to simulate different kinds of color blindness. Powered by the daltonize module.

nbplot_daltonize

Empty notebook, no input files

$ nbplot -t empty -o empty.ipynb
  • Creates an empty notebook in the current folder with the name empty.ipynb and opens it.

Creating a custom template

Templates are just regular .ipynb notebooks, with special variables like the filenames to plot that will get replaced when generating the output notebook.

The easiest way to create a custom template is to copy and adapt an existing one from the templates/ folder of the repository, and put it in your ~/.nbplot/ folder, next to the configuration file. The name of the template is defined in metadata dictionary defined in the special cell that stars with a # [[nbplot]] template line.

The search for template files is recursive, so it is possible to manage custom templates in e.g. an external repository and git clone it in a subfolder under ~/.nbplot.

Configuring the default behavior

When first launched, nbplot generates a configuration file in ~/.nbplot/config.ipynb. It is also a notebook, and the config dictionary will be read after evaluating the cell. The main options are the default template, the folder from which to start the notebook instance, and the folder where the generated plots will be saved.

ChangeLog

v0.3 (April 6th, 2021)

  • Add an empty template and accept to run without input files
  • Fix the recursive globbing of user templates to follow symlinks
  • Fix the image type conversion in the daltonize template

v0.2 (April 4th, 2021)

New features:

  • Add an imshow template to show images with matplotlib.imshow.
  • Add a daltonize template to show images enhanced for colorblind people.
  • Glob templates recursively in ~/.nbplot. This makes it possible to manage private templates via a git cloned subfolder.
  • Add the paste-image special filename to grab an image from the clipboard and embed its content in the notebook.

Fixes:

  • Fix the metadata to automatically load a Python kernel.
  • Don't fail when trying to determine the delimiter on binary files.
  • pandas: handle files with multiple spaces / tabs between columns.

v0.1 (April 1st, 2021)

Initial release.

About

Command-line utility to quickly plot files in a Jupyter notebook.

Topics

Resources

Contributing

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nburrus/nbplot: Command-line utility to quickly plot files in a Jupyter notebook. · GitHub
Skip to content

Repository files navigation

image

nbplot

Command-line utility to quickly plot files in a Jupyter notebook.

Tools like pandas+matplotlib are very powerful, but it takes some time to plot a file from scratch: run a Jupyter notebook instance, create a notebook, import the modules, go grab the path of the file, remember how to call read_csv properly, create the matplotlib figure, etc. The goal of nbplot is to remove that friction and make this as easy as launching a dedicated tool like gnuplot.

Demo

nbplot_demo

Installation

Tested on Python 3.8 to 3.12, but it likely works on more versions.

pip install nbplot

Features

  • Can be fully configured via templates. A template is just a notebook with some special variables that will get replaced.

  • Ships with a default template for numpy+matplotlib and one for pandas+matplotlib.

  • Can guess the column delimiter of text files.

  • Data can be directly read from stdin, and the string will be embedded in the generated notebook.

  • Will try to reuse an existing instance of notebook server (inspired by nbopen).

Examples

Plots

$ cat mydata.txt
1 1
2 4
3 9
4 16
$ nbplot mydata.txt
  • Generates a notebook ~/nbplot/{{date}}-mydata.ipynb with the code to load mydata.txt with pandas.read_csv and the guessed space delimiter.

  • Opens the notebook in the browser, reusing existing instances of Jupyter if possible, starting a new one otherwise.


$ nbplot -t numpy mydata.txt
  • Generates the notebook with the numpy template, using numpy.genfromtxt to load the file.

$ nbplot mydata1.txt mydata2.txt [...]
  • Generates a notebook that loads all the input files in the same plot.

$ for i in `seq -10 10`; do echo $i $((i*i)); done | nbplot -
  • Reads the data to plot from stdin and generates a notebook to plot it, with the data embedded as a string.

nbplot_stdin

Images

$ nbplot -t imshow image1.png image2.jpg
  • Uses the imshow template to generate a notebook that loads and displays the 2 images with matplotlib imshow and PIL.Image.

$ nbplot -t imshow paste-image
  • Use the special paste-image filename to directly plot an image from the clipboard. It will get embedded into the notebook via a base64 string.

nbplot_images_clipboard


$ nbplot -t daltonize Ishihara_9_from_wikipedia.png
  • The daltonize template generates a notebook with the same image rendered with various color filters that can either help color-blind people to better see the contrasts, or designers to simulate different kinds of color blindness. Powered by the daltonize module.

nbplot_daltonize

Empty notebook, no input files

$ nbplot -t empty -o empty.ipynb
  • Creates an empty notebook in the current folder with the name empty.ipynb and opens it.

Creating a custom template

Templates are just regular .ipynb notebooks, with special variables like the filenames to plot that will get replaced when generating the output notebook.

The easiest way to create a custom template is to copy and adapt an existing one from the templates/ folder of the repository, and put it in your ~/.nbplot/ folder, next to the configuration file. The name of the template is defined in metadata dictionary defined in the special cell that stars with a # [[nbplot]] template line.

The search for template files is recursive, so it is possible to manage custom templates in e.g. an external repository and git clone it in a subfolder under ~/.nbplot.

Configuring the default behavior

When first launched, nbplot generates a configuration file in ~/.nbplot/config.ipynb. It is also a notebook, and the config dictionary will be read after evaluating the cell. The main options are the default template, the folder from which to start the notebook instance, and the folder where the generated plots will be saved.

ChangeLog

v0.3 (April 6th, 2021)

  • Add an empty template and accept to run without input files
  • Fix the recursive globbing of user templates to follow symlinks
  • Fix the image type conversion in the daltonize template

v0.2 (April 4th, 2021)

New features:

  • Add an imshow template to show images with matplotlib.imshow.
  • Add a daltonize template to show images enhanced for colorblind people.
  • Glob templates recursively in ~/.nbplot. This makes it possible to manage private templates via a git cloned subfolder.
  • Add the paste-image special filename to grab an image from the clipboard and embed its content in the notebook.

Fixes:

  • Fix the metadata to automatically load a Python kernel.
  • Don't fail when trying to determine the delimiter on binary files.
  • pandas: handle files with multiple spaces / tabs between columns.

v0.1 (April 1st, 2021)

Initial release.

About

Command-line utility to quickly plot files in a Jupyter notebook.

Topics

Resources

Contributing

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nburrus/nbplot: Command-line utility to quickly plot files in a Jupyter notebook. · GitHub
Skip to content

Repository files navigation

image

nbplot

Command-line utility to quickly plot files in a Jupyter notebook.

Tools like pandas+matplotlib are very powerful, but it takes some time to plot a file from scratch: run a Jupyter notebook instance, create a notebook, import the modules, go grab the path of the file, remember how to call read_csv properly, create the matplotlib figure, etc. The goal of nbplot is to remove that friction and make this as easy as launching a dedicated tool like gnuplot.

Demo

nbplot_demo

Installation

Tested on Python 3.8 to 3.12, but it likely works on more versions.

pip install nbplot

Features

  • Can be fully configured via templates. A template is just a notebook with some special variables that will get replaced.

  • Ships with a default template for numpy+matplotlib and one for pandas+matplotlib.

  • Can guess the column delimiter of text files.

  • Data can be directly read from stdin, and the string will be embedded in the generated notebook.

  • Will try to reuse an existing instance of notebook server (inspired by nbopen).

Examples

Plots

$ cat mydata.txt
1 1
2 4
3 9
4 16
$ nbplot mydata.txt
  • Generates a notebook ~/nbplot/{{date}}-mydata.ipynb with the code to load mydata.txt with pandas.read_csv and the guessed space delimiter.

  • Opens the notebook in the browser, reusing existing instances of Jupyter if possible, starting a new one otherwise.


$ nbplot -t numpy mydata.txt
  • Generates the notebook with the numpy template, using numpy.genfromtxt to load the file.

$ nbplot mydata1.txt mydata2.txt [...]
  • Generates a notebook that loads all the input files in the same plot.

$ for i in `seq -10 10`; do echo $i $((i*i)); done | nbplot -
  • Reads the data to plot from stdin and generates a notebook to plot it, with the data embedded as a string.

nbplot_stdin

Images

$ nbplot -t imshow image1.png image2.jpg
  • Uses the imshow template to generate a notebook that loads and displays the 2 images with matplotlib imshow and PIL.Image.

$ nbplot -t imshow paste-image
  • Use the special paste-image filename to directly plot an image from the clipboard. It will get embedded into the notebook via a base64 string.

nbplot_images_clipboard


$ nbplot -t daltonize Ishihara_9_from_wikipedia.png
  • The daltonize template generates a notebook with the same image rendered with various color filters that can either help color-blind people to better see the contrasts, or designers to simulate different kinds of color blindness. Powered by the daltonize module.

nbplot_daltonize

Empty notebook, no input files

$ nbplot -t empty -o empty.ipynb
  • Creates an empty notebook in the current folder with the name empty.ipynb and opens it.

Creating a custom template

Templates are just regular .ipynb notebooks, with special variables like the filenames to plot that will get replaced when generating the output notebook.

The easiest way to create a custom template is to copy and adapt an existing one from the templates/ folder of the repository, and put it in your ~/.nbplot/ folder, next to the configuration file. The name of the template is defined in metadata dictionary defined in the special cell that stars with a # [[nbplot]] template line.

The search for template files is recursive, so it is possible to manage custom templates in e.g. an external repository and git clone it in a subfolder under ~/.nbplot.

Configuring the default behavior

When first launched, nbplot generates a configuration file in ~/.nbplot/config.ipynb. It is also a notebook, and the config dictionary will be read after evaluating the cell. The main options are the default template, the folder from which to start the notebook instance, and the folder where the generated plots will be saved.

ChangeLog

v0.3 (April 6th, 2021)

  • Add an empty template and accept to run without input files
  • Fix the recursive globbing of user templates to follow symlinks
  • Fix the image type conversion in the daltonize template

v0.2 (April 4th, 2021)

New features:

  • Add an imshow template to show images with matplotlib.imshow.
  • Add a daltonize template to show images enhanced for colorblind people.
  • Glob templates recursively in ~/.nbplot. This makes it possible to manage private templates via a git cloned subfolder.
  • Add the paste-image special filename to grab an image from the clipboard and embed its content in the notebook.

Fixes:

  • Fix the metadata to automatically load a Python kernel.
  • Don't fail when trying to determine the delimiter on binary files.
  • pandas: handle files with multiple spaces / tabs between columns.

v0.1 (April 1st, 2021)

Initial release.

About

Command-line utility to quickly plot files in a Jupyter notebook.

Topics

Resources

Contributing

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - nburrus/nbplot: Command-line utility to quickly plot files in a Jupyter notebook. · GitHub
Skip to content

Repository files navigation

image

nbplot

Command-line utility to quickly plot files in a Jupyter notebook.

Tools like pandas+matplotlib are very powerful, but it takes some time to plot a file from scratch: run a Jupyter notebook instance, create a notebook, import the modules, go grab the path of the file, remember how to call read_csv properly, create the matplotlib figure, etc. The goal of nbplot is to remove that friction and make this as easy as launching a dedicated tool like gnuplot.

Demo

nbplot_demo

Installation

Tested on Python 3.8 to 3.12, but it likely works on more versions.

pip install nbplot

Features

  • Can be fully configured via templates. A template is just a notebook with some special variables that will get replaced.

  • Ships with a default template for numpy+matplotlib and one for pandas+matplotlib.

  • Can guess the column delimiter of text files.

  • Data can be directly read from stdin, and the string will be embedded in the generated notebook.

  • Will try to reuse an existing instance of notebook server (inspired by nbopen).

Examples

Plots

$ cat mydata.txt
1 1
2 4
3 9
4 16
$ nbplot mydata.txt
  • Generates a notebook ~/nbplot/{{date}}-mydata.ipynb with the code to load mydata.txt with pandas.read_csv and the guessed space delimiter.

  • Opens the notebook in the browser, reusing existing instances of Jupyter if possible, starting a new one otherwise.


$ nbplot -t numpy mydata.txt
  • Generates the notebook with the numpy template, using numpy.genfromtxt to load the file.

$ nbplot mydata1.txt mydata2.txt [...]
  • Generates a notebook that loads all the input files in the same plot.

$ for i in `seq -10 10`; do echo $i $((i*i)); done | nbplot -
  • Reads the data to plot from stdin and generates a notebook to plot it, with the data embedded as a string.

nbplot_stdin

Images

$ nbplot -t imshow image1.png image2.jpg
  • Uses the imshow template to generate a notebook that loads and displays the 2 images with matplotlib imshow and PIL.Image.

$ nbplot -t imshow paste-image
  • Use the special paste-image filename to directly plot an image from the clipboard. It will get embedded into the notebook via a base64 string.

nbplot_images_clipboard


$ nbplot -t daltonize Ishihara_9_from_wikipedia.png
  • The daltonize template generates a notebook with the same image rendered with various color filters that can either help color-blind people to better see the contrasts, or designers to simulate different kinds of color blindness. Powered by the daltonize module.

nbplot_daltonize

Empty notebook, no input files

$ nbplot -t empty -o empty.ipynb
  • Creates an empty notebook in the current folder with the name empty.ipynb and opens it.

Creating a custom template

Templates are just regular .ipynb notebooks, with special variables like the filenames to plot that will get replaced when generating the output notebook.

The easiest way to create a custom template is to copy and adapt an existing one from the templates/ folder of the repository, and put it in your ~/.nbplot/ folder, next to the configuration file. The name of the template is defined in metadata dictionary defined in the special cell that stars with a # [[nbplot]] template line.

The search for template files is recursive, so it is possible to manage custom templates in e.g. an external repository and git clone it in a subfolder under ~/.nbplot.

Configuring the default behavior

When first launched, nbplot generates a configuration file in ~/.nbplot/config.ipynb. It is also a notebook, and the config dictionary will be read after evaluating the cell. The main options are the default template, the folder from which to start the notebook instance, and the folder where the generated plots will be saved.

ChangeLog

v0.3 (April 6th, 2021)

  • Add an empty template and accept to run without input files
  • Fix the recursive globbing of user templates to follow symlinks
  • Fix the image type conversion in the daltonize template

v0.2 (April 4th, 2021)

New features:

  • Add an imshow template to show images with matplotlib.imshow.
  • Add a daltonize template to show images enhanced for colorblind people.
  • Glob templates recursively in ~/.nbplot. This makes it possible to manage private templates via a git cloned subfolder.
  • Add the paste-image special filename to grab an image from the clipboard and embed its content in the notebook.

Fixes:

  • Fix the metadata to automatically load a Python kernel.
  • Don't fail when trying to determine the delimiter on binary files.
  • pandas: handle files with multiple spaces / tabs between columns.

v0.1 (April 1st, 2021)

Initial release.

About

Command-line utility to quickly plot files in a Jupyter notebook.

Topics

Resources

Contributing

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages