Matplotlib  

Developer: Dave's Plugins     Like this plugin? Show your appreciation!
Category: Reporting/UI/Control Pages
Github: Github Repo
Assistance: Get help!    Check the online documentation
Plugin ID: com.fogbert.indigoplugin.matplotlib
Latest release: v0.8.01 released on April 4, 2019
Release downloaded: 20 times
Requires: Indigo v7.0.2 or higher
(Check the Releases tab below for older releases that may have different requirements)
  Download latest release

Logo

The Matplotlib plugin allows you to easily create attractive charts for display on Indigo Home Control Server control pages. The plugin also includes a facility to create necessary CSV data for display.

Highlights:
- Easily create visually appealing charts for Indigo control pages. - Seamlessly manage attributes like color, fonts, sizes (and more!) for all charts at once. - Customize individual charts with markers, annotations, minimums and maximums, and user-defined constants. - Chart types Include: Line Charts, Bar Charts, Polar Charts, Multiline Text Charts, and WUnderground Plugin Charts. - Chart data that is created with the plugin, or incorporate your own (CSV). - Charts update automatically.

The Matplotlib plugin is designed to make creating visually appealing charts for Indigo control pages easy. Many of the chart attributes, such as background color, font styles and chart size can be managed centrally--for example, you can change the background color of all your charts simultaneously. You can add additional customizations to each individual chart if you like, such as overriding the default chart size or displaying a chart legend only on selected charts. The overriding emphasis in designing the plugin is simplicity. The instructions below seem like a lot, but almost all of the settings can be left at their default when you begin. It's probably best to read through all these instructions before getting started.

Note: The Matplotlib plugin does not require Internet access in order to function; however, it does require Internet access to check for plugin software updates. These features are not required to use the plugin.

Release details
Released on: April 4, 2019
Requires: Indigo v7.0.2+
Downloaded: 20 times 
Changes in this release

Another long list of changes.

Although the changes and potential bugs should be low risk, those choosing to update should make a backup of CSV data. Although it shouldn't be necessary, a full backup would include the prior plugin file, and the prior plugin preferences file located at: /Library/Application Support/Perceptive Automation/Indigo 7.2/Preferences/Plugins/com.fogbert.indigoplugin.matplotlib.indiPref adjusted for whatever your current version of Indigo may be.

Please post any questions or bugs to the Indigo forum or here on GitHub.

Here is a consolidated list of changes since the prior version:

v0.8.01 - Plugin should shut down more gracefully. - Code refinements.

v0.7.57 - Moves 'None' options in drop-down lists to bottom of list (per Indigo standard.)

v0.7.56 - Adds check to ensure that the plugin is compatible with Indigo version.

v0.7.55 - Re-fixes float error in the duration value for CSV refreshes.

v0.7.54 - Fixes float error in the duration value for CSV refreshes. - Moves dev prop maintenance routine to deviceStartComm.

v0.7.53 - Adds tests to alert the user that they're saving charts to the wrong location (when the Indigo version is updated.) - Fixes bug where battery level being displayed regardless of setting.

v0.7.52 - Better handles long device names in Battery Health chart. - Plots title relative to figure instead of to plot. - Fixes KeyError bug in pluginEnvironmentLogger 'isChart'.

v0.7.51 - Adds control to hide device names on battery health charts. - Improves plotting of battery level values on battery health charts. - Code refinements.

v0.7.50 - Consolidates chart plot logging into single method. - Help bubble refinements. - Code refinements.

v0.7.49 - Standardizes plotting of X axis label across all devices. - Standardizes plotting of chart title across all devices. - Standardizes save image code across all devices. - Refines <SupportURL> behavior across all plugin elements.

v0.7.48 - Adds support for charting 'Armed' and 'Disarmed' values.

v0.7.47 - Improves handling of CSV data updates when duration is set to zero (no limit.)

v0.7.46 - Fixes empty text instances for custom Y tick labels (where locations are defined but labels are not.)

v0.7.45 - Adds feature to Battery Health Device to plot a background box for battery level values. - Improves validation for chart axis limits (Y Min, Y Max, Y2 Min, Y2 Max). - Improves code for plotting Y1 and Y2 axis limits (Y Min, Y Max, Y2 Min, Y2 Max). - Code refinements.

v0.7.44 - Updates config dialog text for Battery Health Chart - excluded devices (language referred to legacy control.) - Adds requirement that the custom Y tick labels field and custom Y tick values field be the same length. - Fixes bug for Battery Health Chart to remove "No Battery Devices" dummy device when actual devices present.

v0.7.43 - Adds default entries for legend labels (will only be displayed if Display Legend option is enabled.)

v0.7.42 - Refines configuration dialog control labels. - Deletes unneeded Fill control from Bar Devices (bar 4).

v0.7.41 - Fixes bug in format_axis_y_ticks where error was thrown under certain conditions (including 'None', '', and ' '.) - Improved error logging.

v0.7.40 - Fixed bug in line charting for TypeError: list indices must be integers, not str'

v0.7.39 - No longer allows creation of CSV device without establishing at least one data source. - Fixes bug in validation of plugin configuration settings for change logging. - Improves docstrings.

v0.7.38 - Adds process garbage collection to runConcurrentThread().

v0.7.37 - Chart update processes are no longer blocking. - Puts CSV refreshing back in the main thread.

v0.7.36 - Moves CSV refreshing to its own process.

v0.7.35 - Fixes bug in custom line segments where only the first custom line is plotted.

v0.7.34 - Fixes bug in duration setting for CSV devices.

Release details
Released on: Feb. 17, 2019
Requires: Indigo v7.0.2+
Downloaded: 2 times 
Changes in this release

Rather than try to single out meaningful changes, I'll list them all (it may also be helpful to those that might want to isolate a specific build.) This series of changes also completely eliminates any hooks into the pandas library (as of build v0.7.22.)

This represents a huge update to the plugin and, while it has been running very stably in testing, there could be some lingering bugs. It is recommended that you backup any data files before installing this update.

v0.7.33 - Further improves maintenance of legacy props in all chart devices. - Moves maintenance tasks to separate module.

v0.7.32 - Further improves maintenance of legacy props in all chart devices. - Set all device UI icons to off state when comm killed through plugin menu action. - Fixed bug in snappy config menus which created unneeded device props.

v0.7.31 - Fixed bug in bar chart config dialog where X axis grid setting not hiding properly.

v0.7.30 - Improves logging of plugin prefs when changes made using configuration dialog. - Fixes placement of line 6 suppression option in line chart device configuration dialog.

v0.7.29 - Improves resiliency to CSV files that contain 1 or fewer observations. - Changes the default timestamp from the epoch to current time (retains the epoch as the default device last refresh). - Adds trap for RuntimeError when trying to save chart image to address the 'too many ticks' error. - Adds trap for TypeError when trying to generate a best fit line segment to address the 'int' object is not iterable error. - Adds number of chart devices and CSV engine devices to plugin environment logging.

v0.7.28 - Improved conversion of legacy line fill properties to bool type.

v0.7.27 - Reorders plugin device model list when editing device. - Improves error logging. - Cleans up XML attributes.

v0.7.26 - Revises chart device names for consistency. - Fixes bug in battery chart device "KeyError: 'customSizeChart'. "

v0.7.25 - Adds choice to bar, line and scatter charts to suppress the plotting of individual data elements. The data and all settings are retained.

v0.7.24 - Synchronize self.pluginPrefs in closedPrefsConfigUi().

v0.7.23 - Adds choice to set bar width to make it simpler for first time device creation. If the value is set to zero, the plugin will attempt to set an attractive bar width automatically. Zero is now the new default for new bar chart devices. - Changes menu items from "En/Disable All Devices" to "En/Disable All Plugin Devices". - Changes default font for Calendar Devices to 12 pt (to better fit the default image size for non-retina screens.) - Changes behavior of custom size chart checkbox so that now, custom size values will only be honored when the custom size checkbox is checked. - Improves validation of plugin device configuration settings. - Improves setting of Y1 limits and better handles condition where limits set improperly when all observations are the same value. - Updates CSV device validation for duration (data to keep). - Updates behavior so that if all CSV data are older than the time limit, the plugin will return the original data and warn the user. - Refines grid settings for Polar Chart Devices. - Fixes bug in Line Chart devices where customizations (like best fit or fill) would result in an 'argument dimensions are incompatible' error. - Fixes bug in default line color settings for Weather Forecast devices. - Fixes bug in new CSV data source names that contain extended Unicode characters. - Fixes bug in new and existing Polar Chart data source names that contain extended Unicode characters. - Fixes bug where data header name was converted to 'NaN' while data quality repairs were made. - Fixes bug where line chart best fit property incorrectly stored as a string. Will convert legacy devices in this state to boolean. - Changes Python lists to tuples where possible to improve speed. - Updates kDefaultPluginPrefs. - Code refinements.

v0.7.22 - Removes dependence on pandas library. - Code refinements.

v0.7.21 - Removes default location from plugin preferences for data and chart save locations.

v0.7.20 - Improves resiliency in dealing with malformed CSV files. - Adds new date formats for chart axes: - Jan 16 [M D] - Jan 16 2019 [M D Y] - 16 Jan [D M] - 2019 Jan 16 [Y M D] - [Line Devices] Hides the best fit color control until the "Plot Best Fit" checkbox is selected. - Fixes bug in date/time format specifiers. - Improves CSV item processing performance. - Fixes bug in manual refresh Action. - Attempts to work around pandas bug in rare csv write bug where the string '-01-01 00:00:00' is added to observation data. - Refines plugin logging. - Improves under-hood maintenance to ensure that the plugin and its devices are up to date for the installed version (plugin preference, device properties, etc.) - Code refinements.

v0.7.19 - CSV Engine / Edit Data Item / Data Source control now returns a case- insensitive sorted list. - Fixes bug in naming of CSV Engine data items that contain Unicode characters. - Ups the default duration limit to no limit (where it should have been in the first place.)

Release details
Released on: Dec. 30, 2018
Requires: Indigo v7.0.2+
Downloaded: 52 times 
Changes in this release
  • Ups the duration limit default to 7200 hours.
Release details
Released on: Dec. 30, 2018
Requires: Indigo v7.0.2+
Downloaded: 0 times 
Changes in this release
  • Adds filter to CSV Engine Add Data Item and Edit Data Item controls to allow source menu to be filtered to show all sources, just devices, or just variables.
  • Adds CSV Engine device limit based on time (in hours).
  • Includes pandas library in base installation (v0.19.1) and consolidates csv_refresh_process() under pandas.
  • Improves device configuration dialogs (battery health, line).
  • Removes plugin update checking.
  • Fixes bug where manual update charts were updating every 15 seconds.
  • Fixes bug where device comm not honored for chart devices when called by single chart refresh action.
  • Code refinements.
Release details
Released on: Dec. 16, 2018
Requires: Indigo v7.0.2+
Downloaded: 21 times 
Changes in this release

v0.7.09 - Settings for manual CSV refresh actions retained when CSV Engine device source names changed.

v0.7.08 - Adds Action item to update CSV device set to manual update only - Adds Action item to update CSV device set to manual update only for single CSV data source.

Release details
Released on: Oct. 17, 2018
Requires: Indigo v7.0.2+
Downloaded: 45 times 
Changes in this release
  • Fixes bug for rare circumstance where chart device's 'csvLastUpdated' state did not save in expected timestamp format.
Release details
Released on: Sept. 11, 2018
Requires: Indigo v7.0.2+
Downloaded: 39 times 
Changes in this release

Fixes datetime bug in new CSV Engine devices (csvLastUpdated).

Release details
Released on: Aug. 22, 2018
Requires: Indigo v7.0.2+
Downloaded: 19 times 
Changes in this release
  • Adds support for Fantastic Weather forecast devices.
  • Fixes bug in Refresh Charts menu item.
  • Fixes bug in Refresh Charts action item.
Release details
Released on: Aug. 16, 2018
Requires: Indigo v7.0.2+
Downloaded: 9 times 
Changes in this release
  • Moves refresh interval to charts. Users can now establish individual refresh rates for each chart separately.
  • Adds weekly option to refresh interval.
  • Better sorting of CSV sources within device configuration dialogs.
  • Significantly reduces debug logging.
  • Code refinements.
Release details
Released on: Aug. 9, 2018
Requires: Indigo v7.0.2+
Downloaded: 11 times 
Changes in this release

v0.7.03 - Fixes bug in setting of marker style for lines 5 and 6. - Fixes bug in setting of marker color for all lines. - Fixes bug in sorting of data source names for device configuration. - Code refinements.

v0.7.02 - Moves charting code into separate class.

v0.7.01 - Adjusts chart output logging for consistency between enabled and disabled devices. - Fixes bug where legacy devices not updated for missing line5Annotate and line6Annotate props.

Release details
Released on: July 21, 2018
Requires: Indigo v7.0.2+
Downloaded: 19 times 
Changes in this release

v0.6.06 - Adds two more lines to the line charting device. - Fixes bug where best fit line affected legend entries.

v0.6.05 - Fixes bug in Scatter Chart devices to plot points when marker is set to None. (This is a bug in matplotlib, plugin overrides the behavior). - Fixes bug in naming of PluginConfig.xml (which caused problems on systems set up as case sensitive.

Release details
Released on: May 1, 2018
Requires: Indigo v7.0.2+
Downloaded: 47 times 
Changes in this release

v0.6.04 - New Feature: optional 'best fit line' for line and scatter charts. - Polar charts will now plot when CSV records are fewer than the desired number of observations. - Significantly reduces the amount of information written to the log unless verbose logging is enabled.

v0.6.03 - Improves placement of legend for 10 day and 24 hour forecast devices. - Base CSV file now created at the time new item added to CSV engine.

v0.6.02 - Adds feature to battery health chart to select devices to exclude from the list of devices charted. - Fixes bug in grid setting for battery health chart.

Release details
Released on: April 18, 2018
Requires: Indigo v7.0.2+
Downloaded: 10 times 
Changes in this release
  • New Battery Health Device: plots the battery level of all Indigo devices that report a battery level value.
  • Adds new daylight indicator to 24 hour forecast device. The default is to display daylight on the chart; the setting can be disabled from the device configuration dialog.
  • Adds delay between updates of CSV data and processing of charts to ensure data writing steps have completed.
  • Improves polar device handling of condition where the number of csv observations is less than the number wanted by the device.
  • Improves error handling for situations where a fatal error might cause a device to hang during refresh.
Release details
Released on: March 11, 2018
Requires: Indigo v7.0.2+
Downloaded: 25 times 
Changes in this release
  • Improves handling of nonsense values (-99 values).
  • Suppresses non-chart device types from displaying in Update Chart Actions.
  • Adds separators and labels to dropdown menus for context and visual clarity.
  • Refactors code for better method naming convention.
  • Improves code commenting and adds Sphinx compatability to docstrings.
  • Code consolidation.
Release details
Released on: Feb. 5, 2018
Requires: Indigo v7.0.2+
Downloaded: 19 times 
Changes in this release
  • Adds line chart device validation to disallow fill with steps line style.
  • Updates plugin update checker to use curl to overcome outdated security of Apple's Python install.
Release details
Released on: Feb. 1, 2018
Requires: Indigo v7.0.2+
Downloaded: 1 times 
Changes in this release

This release of the Matplotlib plugin contains:

New Features:

  • Adds data adjustment factor to line devices.
  • Adds format setting for X axis label format to be None. (No X axis label will appear.)
  • Plugin is now more agnostic about the date format for CSV files. (Should now work with any date/time value that is acceptable to the dateutil parser.)
  • Adds internal converter to allow more binary values to be plotted. The following values plot as True (1): 'locked', 'on', 'open', 'up', 'true', '1'. The plugin will now also skip values of '-99' which are meaningless values set by the WUnderground plugin when rational data aren't provided by the service.

Enhancements and Refinements:

  • Adds logic to convert legacy colors set as hex to raw. (FF FF FF instead of #FFFFFF)
  • Improves device config default settings for all charts.
  • Removes obsolete references to pre-colorpicker color settings.
  • Improves device config validation for: Bar, Line, Multiline Text, Polar, Scatter, and Weather charts.
  • Expands use of DLFramework.
  • Corrects Indigo API reference in info.plist from 2.0.0 to 2.0
Release details
Released on: Nov. 21, 2017
Requires: Indigo v7.0.2+
Downloaded: 39 times 
Changes in this release
  • Code consolidation.
  • Standardizes file framework.
  • Adds wiki documentation.
  • Adds README.md
Requirements

The Matplotlib plugin requires system resources that should be available with basic OS X installations, and should run "out of the box". I can't guarantee compatibility with newer versions of the resources listed below,

Resource Version
Indigo the plugin requires Indigo 7 and is not compatible with prior versions.
Internet the plugin does not require Internet access to function; however, certain features -- such as the plugin update checker -- will only function with Internet access.
Matplotlib tested as compatible with v1.3.1 (although older versions may work.)
Numpy tested as compatible with v1.8.0rc1 (although older versions may work.)
Python tested as compatible with v2.7 (although older versions may work.)
Release details
Released on: Oct. 22, 2017
Requires: Indigo v7.0.2+
Downloaded: 33 times 
Changes in this release

v0.4.16 - Under-the-hood code refinements. - Adds note to documentation that the plugin requires Internet access to function.

v0.4.15 - Moves Redraw Single Chart action to the device actions submenu and renames it to 'Redraw Chart'. - Moves Redraw All Charts action to the device actions submenu.