gramm (complete data visualization toolbox, ggplot2/R-like)
편집자 메모: This file was selected as MATLAB Central Pick of the Week
Gramm is a powerful plotting toolbox which allows to quickly create complex, publication-quality figures in Matlab, and is inspired by R's ggplot2 library. As a reference to this inspiration, gramm stands for GRAMmar of graphics for Matlab.
USE CASES AND EXAMPLE SCREENSHOTS ON THE GITHUB README:
https://github.com/piermorel/gramm
For quick help use the cheat sheet:
https://github.com/piermorel/gramm/raw/master/gramm%20cheat%20sheet.pdf
CITE GRAMM:
Morel, (2018). Gramm: grammar of graphics plotting in Matlab. Journal of Open Source Software, 3(23), 568, https://doi.org/10.21105/joss.00568
WORKFLOW:
The typical workflow to generate a figure with gramm is the following (the example figures in the vignette are generated using 6 lines of code):
- In a first step, provide gramm with the relevant data for the figure: X and Y variables, but also grouping variables that will determine color, subplot rows/columns, etc.
- In the next steps, add graphical layers to your figure: raw data layers (directly plot data as points, lines...) or statistical layers (plot fits, histograms, densities, summaries with confidence intervals...). One instruction is enough to add each layer, and all layers offer many customization options.
- In the last step, gramm draws the figure, and takes care of all the annoying parts: no need to loop over colors or subplots, colors and legends are generated automatically, axes limits are taken care of, etc.
FEATURES:
- Accepts X,Y and Z data as arrays, matrices or cells of arrays
- Accepts grouping data as arrays or cellstr. Gramm works best with table-like data: separate variables/fields/columns for the variables of interest, with each variable having as many elements as observations.
- Multiple ways of separating data by groups:
- Colors, lightness, point markers, line styles, and point/line size ('color', 'lightness', 'marker', 'linestyle', 'size')
- Subplots by row and/or columns, or wrapping columns (facet_grid() and facet_wrap()). Multiple options for consistent axis limits across facets, rows, columns, etc. (using 'scale' and 'space').
- Multiple ways of directly plotting the data:
- scatter plots (geom_point()) and jittered scatter plot (geom_jitter())
- lines (geom_line())
- confidence intervals (geom_interval())
- bars plots (geom_bar())
- raster plots (geom_raster())
- point counts (point_count())
- Multiple ways of plotting statistical visualizations of the data:
- y data summarized by x values (uniques or binned) with confidence intervals (stat_summary())
- histograms and density plots of x values (stat_bin() and stat_density())
- histograms of x-y differences (stat_cornerhist())
- box and whisker plots (stat_boxplot())
- violin plots (stat_violin())
- quantile-quantile plots (stat_qq()) of x data distribution against theoretical distribution or y data distribution.
- spline-smoothed y data with optional confidence interval (stat_smooth())
- 2D binning with contour or heatmap output (stat_bin2d())
- GLM fits (stat_glm(), requires statistics toolbox)
- Custom fits with user-provided anonymous function (stat_fit(), requires curve fitting toolbox)
- Ellipses of confidence (stat_ellipse())
- Subplots are created without too much empty space in between (and resize properly !)
- Polar coordinates (set_polar())
- 'z' input data in gramm() creates 3D plots when using geom_point() or geom_line()
- Color data can also be displayed as a continous variable, not as a grouping factor (set_continuous_color())
- X and Y axes can be flipped to get horizontal statistics visualizations (coord_flip())
- Color generation can be customized in the LCH color space, or can use alternative/custom colormaps (set_color_options())
- Marker shapes and sizes can be customized with set_point_options()
- Line styles and width can be customized with set_line_options()
- Text elements aspect can be customized with set_text_options()
- Confidence intervals as shaded areas, error bars or thin lines
- Set the width and dodging of graphical elements in geom_ functions, stat_bin(), stat_summary(), and stat_boxplot(), with 'width' and 'dodge' arguments
- The member structure results contains the results of computations from stat_ plots as well as graphic handles for all plotted elements
- Global title (set_title)
- Multiple gramm plots can be combined in the same figure by creating a matrix of gramm objects and calling the draw() method on the whole matrix. An overarching title can be added by calling set_title on the whole matrix.
- Different groupings can be used for different stat_ and geom_ layers with the update() method
- Matlab axes properties are acessible through the method axe_property
- Custom legend labels with set_names
- Plot reference elements on the plots with geom_abline, geom_vline, geom_hline, and geom_polygon
- Date ticks with set_datetick
- Draw in a specific figure or uipanel/uitab with set_parent()
인용 양식
Morel, Pierre. “Gramm: Grammar of Graphics Plotting in Matlab.” The Journal of Open Source Software, vol. 3, no. 23, The Open Journal, Mar. 2018, p. 568, doi:10.21105/joss.00568.
MATLAB 릴리스 호환 정보
플랫폼 호환성
Windows macOS Linux카테고리
- AI, Data Science, and Statistics > Statistics and Machine Learning Toolbox > ANOVA >
- Sciences > Neuroscience > Frequently-used Algorithms >
- AI, Data Science, and Statistics > Statistics and Machine Learning Toolbox > Descriptive Statistics and Visualization > Statistical Visualization > Box Plots >
태그
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!@gramm
@gramm/private
GitHub 디폴트 브랜치를 사용하는 버전은 다운로드할 수 없음
버전 | 게시됨 | 릴리스 정보 | |
---|---|---|---|
2.25 | Added full tab auto-complete for arguments and options with functionSignatures.json |
|
|
2.24.2.0 | Updated description |
|
|
2.24.0.0 | - Added JOSS paper and DOI information
|
|
|
2.23.0.0 | Preparation for JOSS submission |
|
|
2.22.0.0 | Added set_layout_options() allowing to fully customize figure layout in gramm |
||
2.21.0.0 | Corrected bug in geom_bar() when used with the 'stacked' option |
|
|
2.20.0.0 | - Overhaul of legend and colormap support
|
||
2.19.0.0 | Added toggles for row/column labels, improved handling of empty subsets |
|
|
2.18.0.0 | - Added more customization options to geom_bar
|
|
|
2.17.0.0 | Gramm now merges color and marker/size/linestyle legend if they are the same |
|
|
2.16.0.0 | - Added continuous color support to 3D lines and points
|
|
|
2.15.0.0 | - Possibility to set ‘CLim’ in set_continuous_color() in order to force color limits.
|
|
|
2.14.0.0 | Added geom_polygon() method to add custom polygons on plots |
|
|
2.13.0.0 | - Improved graphic fixes for old matlab versions
|
|
|
2.12.0.0 | - Added export() method
|
|
|
2.11.0.0 | Added coord_flip(), which can be used to generate horizontal box plots, violin plots, error bars, etc. |
|
|
2.10.1.0 | - Added the possibility to provide a custom function to stat_summary()
|
|
|
2.10.0.0 | - stat_smooth() now provides more smoothing algorithms, better documentation and more conservative CI estimates
|
|
|
2.9.0.0 | - Added fig() function to separate data across figures
|
|
|
2.8.2.0 | Corrected bug in stat_summary() polar interpolation when x data didn't start at zero radians. Added safety checks. |
|
|
2.8.1.0 | - Corrected absence of y ticks if single facet when using facet_wrap()
|
|
|
2.8.0.0 | Added 'alpha' option to geom_point(), geom_jitter() and geom_line() |
|
|
2.7.0.0 | - Added geom_label() to plot text
|
|
|
2.6.0.0 | - Added set_stat_options() to specify alpha level and N bootstrap samples in all stat_ functions
|
|
|
2.5.0.0 | Added customization options for text, lines and points:
|
|
|
2.4.0.0 | - Added corner histogram of x-y difference stat_cornerhist()
|
||
2.3.1.0 | - Added notch option to stat_boxplot()
|
|
|
2.3.0.0 | - Added stat_violin() to create violin plots
|
|
|
2.2.3.0 | Added functionality to edit legend axes |
|
|
2.2.2.0 | - Corrected rare error on y limit computation
|
|
|
2.2.1.0 | Corrected error with geom_line() and 3D data |
|
|
2.2.0.0 | - Represent user-provided confidence intervals with geom_interval()
|
|
|
2.1.1.0 | - Corrected errorbar thickness
|
|
|
2.1.0.0 | - Added set_parent() method
|
|
|
2.0.1.0 | Updated description |
|
|
2.0.0.0 | - Full refactor from a single file to a @gramm class folder
|
|
|
1.16.1.0 | Corrected stat_summary() to prevent erroneous line/area interruptions |
|
|
1.16.0.0 | - Added 'space' option to facet_grid()
|
|
|
1.15.0.0 | - Improved legend layout
|
|
|
1.14.1.0 | - Changed Picture |
|
|
1.14.0.0 | - ‘z’ input data in gramm() creates 3D plots when using geom_point() or geom_line()
|
|
|
1.13.0.0 | Added possibility to set a global title with set_title() |
|
|
1.12.2.0 | Description correction |
|
|
1.12.1.0 | Added simpler way to set ordering with set_order_options() |
|
|
1.12.0.0 | - Added set_order_options()
|
|
|
1.11.0.0 | Added box and whiskers plots, Quantile-Quantile plots
|
|
|
1.10.0.0 | Added cheat sheet, added geom_funline(), added 'dodge' option to stat_summary() |
|
|
1.9.0.0 | - Results from stat_ plots are now returned in the results member structure.
|
|
|
1.8.0.0 | Changing manually the limits (using pan or zoom) of a facet in a gramm generated figure will now automatically change the scale of the other facets according to the ‘scale’ facet preferences |
|
|
1.7.0.0 | - Added stat_fit() for custom fits (requires curve fitting toolbox)
|
|
|
1.6.0.0 | Plenty of new features (separation by lightness, confidence ellipses, color options, geom_hline, geom_vline) |
|
|
1.5.1.0 | Bug corrrection |
|
|
1.5.0.0 | Enhancements and bug fixes for continuous colors, which can now be forced and customized using set_continuous_color() |
|
|
1.4.0.0 | Added ‘edges’ option for custom bins to stat_bin2d() and stat_bin()
|
|
|
1.3.0.0 | Greatly improved geom_raster() speed when used with option 'geom','line' |
|
|
1.2.0.0 | Additional usage examples |
|
|
1.1.0.0 | Corrected set_datetick() issue, corrected initialization of faceting variables |
|
|
1.0.0.0 |
|