Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved GR framework support #117

Merged
merged 22 commits into from
Jan 28, 2016
Merged

Improved GR framework support #117

merged 22 commits into from
Jan 28, 2016

Conversation

jheinen
Copy link
Member

@jheinen jheinen commented Jan 28, 2016

@tbreloff : Still some TODOs, but probably good enough to merge ...

TODOs:

  • linetype: pie
  • marker shapes
  • multiple figure output
  • animation stuff (will be difficult, because GR has builtin functionality for creating videos)

http://pgi-jcns.fz-juelich.de/pub/doc/ExamplePlots.html

@jheinen jheinen changed the title Dev Improved GR framework support Jan 28, 2016
@tbreloff
Copy link
Member

These plots look really great! Thanks for the effort here... I'll merge when I have a chance.

On Jan 28, 2016, at 12:51 PM, Josef Heinen notifications@github.com wrote:

@tbreloff : Still some TODOs, but probably good enough to merge ...

TODOs:

linetype: pie
marker shapes
multiple figure output
animation stuff (will be difficult, because GR has builtin functionality for creating videos)
http://pgi-jcns.fz-juelich.de/pub/doc/ExamplePlots.html

You can view, comment on, or merge this pull request online at:

#117

Commit Summary

Print TODO messages for missing features
Added support for inline graphics (IJulia)
Fixed problem with uninitialized strings
Use Plots predefined colors
Implemented annotations
Implemented filled backgrounds
Added support for multiple marker colors / sizes
Changed default colormap
Added histogram output
Allow combination of lines and markers
Added horizontal/vertical linetype
Added support for bar plots
Added more line plots
Added support for two y-axis scales
Use SVG output for inline graphics (IJulia)
Improved representation of legends
Added support for subplots and further linetypes:
Added color bars and surface plots
Improved surface output
Added path3d and scatter3d functions
Added support for OHLC charts
Improved graphics state handling
File Changes

M src/backends/gr.jl (562)
M src/backends/supported.jl (7)
Patch Links:

https://github.com/tbreloff/Plots.jl/pull/117.patch
https://github.com/tbreloff/Plots.jl/pull/117.diff

Reply to this email directly or view it on GitHub.

@Evizero
Copy link
Member

Evizero commented Jan 28, 2016

I agree! Looking forward to messing around with it. The lineplots look even nicer than ggplot2.

Have you tried using @manipulate?

@jheinen
Copy link
Member Author

jheinen commented Jan 28, 2016

Glad to hear. But our main focus is on performance and interop ... 😄

@KristofferC
Copy link
Contributor

Very nicely looking plots indeed.

tbreloff added a commit that referenced this pull request Jan 28, 2016
Improved GR framework support
@tbreloff tbreloff merged commit d077307 into JuliaPlots:master Jan 28, 2016
@tbreloff
Copy link
Member

I merged and did some very brief local testing. I think the biggest todo is to stabilize the plotting workflow as best as possible. I immediately ran into some errors which in hindsight I already knew about, but it would be good to keep them on the radar if they're fixable:

  • if you manually close the plot window, it errors and you can't do any more plotting until you quit/reload. I close the window habitually, and this would probably mean I can't use it for real work until this is handled cleanly. I don't want to have to restart my session if I accidentally close a window.
  • plotting 0 or 1 points results in errors. Seems silly, but there's lots of times I initialize a mostly empty plot window expecting to add to it later.
  • some errors cause subsequent commands to complain with errors like "GKS: GKS not in proper state. GKS must be either in the state WSAC or SGOP in routine POLYLINE". It would be best to not allow it to get to this state, and a bonus to call some sort of "resetState" command when creating a new plot, so that past failed plotting commands don't force a session restart
  • will it be possible to have more than 1 plot window open at a time? ideally plot(...) will open a new window

All told, I'm very happy that you decided to spend time on this, and if some of these issues are resolved I could see GR becoming a top choice for backend. Thanks!

@jheinen
Copy link
Member Author

jheinen commented Jan 29, 2016

Problems 2+3 can be fixed with a simple sanity check in gr.jl.

Problems 1+4 describe the same problem - although GR can handle multiple graphics drivers (of different type) simultaneously, I'm still looking for a solution that fits best into GR's logical workstation concept, which is different from switching to a graphics backend.

I'll fix these problems with the next PR. I'm just waiting for an inspiring idea ...

@jheinen
Copy link
Member Author

jheinen commented Jan 31, 2016

Have you tried using @manipulate?

@Evizero : now I did.
manipulate

Thanks for the hint.

@Evizero
Copy link
Member

Evizero commented Jan 31, 2016

I just tried it myself. Very nice!

I also tried to switch to the gr() backend for some of my own notebooks that I am working on and stumbled on some bugs (I assume)

For example copy doesn't seem to work as expected

using Plots
gr()
plt = scatter(randn(10), randn(10))
copy(plt)

@tbreloff @jheinen Since this PR is merged, how do you want to handle GR related issue reports? Do you want me to open new issues for each thing or should we create an umbrella issue for now?

@tbreloff
Copy link
Member

So I'll be honest that I haven't reviewed the GR code in detail yet, which makes it hard for me to meaningfully solve individual issues. I think this could be up to @jheinen. One solution is to open separate issues (preferably with a "GR backend: " prefix to the issue's title), then I or @jheinen can close and consolidate to a single umbrella issue (probably #108) when needed.

I do know that there's probably a little overhaul that will be necessary to make sure all workflows are supported (multiple windows, copying plots, animations, embedded gui windows, etc)... but that this can be a gradual process. I think items that are related in terms of the solution (for example, multiple issues which require independent plot windows) should stay in one issue, and independent issues could live in their own issues.

@jheinen
Copy link
Member Author

jheinen commented Feb 1, 2016

@tbreloff : Need some help with the show / display logic. gr.jl has two writemime methods and both (PNG + SVG) are called when a plot is finalized (results in two files gks.png and gks.svg). Can I set the defaultOutputFormat to something other than PNG, e.g. SVG? The PNG writemime method should only be invoked when the user calls savefig with a .png file extension.

Thanks in advance ...

t-bltg pushed a commit that referenced this pull request Oct 6, 2022
Co-authored-by: BeastyBlacksmith <BeastyBlacksmith@users.noreply.github.com>
t-bltg added a commit that referenced this pull request Oct 6, 2022
* use Dates

* Add compat for RecipesBase

* Fix badges

* Plots test

* Fix travis

* Forgot using

* Update .travis.yml

Co-Authored-By: Anshul Singhvi <asinghvi17@simons-rock.edu>

* Use ds/rewrite

* Try with --project


Credit: Fredrik Ekre

* Use latest stable julia version

* Allow failures on MacOS

* Docs deployment

* Literate + enable deploy

* Update Project.toml

* fix missing comma

* Fix error

* try fixing repo name

* small change to trigger CI

* play better with Literate

* allow type recipes for `Number`s in arrays and surfaces

* small fixes

* skip maybestrings

* fix ambiguity

* Add badge

* Fix build badge link

* Show status only for master branch

* Fix README docs link

* remove subdomain

* Create TagBot.yml

* fix surface type recipe

* bump version

* fix error for grouping

* bump version

* further grouping fixes

* bump version

* fix plotting functions

* bump version

* downgrade version

* fix plotting rowvector of functions

* bump version

* support parametric type in `@userplot`

* add docs for parametric type in `@userplot`

* bump version

* fix grouping

* bump version

* bump PlotUtils compat

* bump version

* add zulip chat link to readme [skip ci]

* add zulip link [skip ci]

* Fix typo in docs

`AbstractArry` -> `AbstractArray`

* add hook after series decomposition (#52)

* add process_sliced_series_attributes!

* export process_slice_series_attrributes!

* remove `kw`

* Update Project.toml

[skip ci]

* Initial pass at CI

* Add script from Plots

* Update to MakieRecipes

* comment out artifact uploads

* Plots test

* CairoMakie tests

* Forgot using

* Update .travis.yml

Co-Authored-By: Anshul Singhvi <asinghvi17@simons-rock.edu>

* Use ds/rewrite

* Try with --project

* Another try

Credit: Fredrik Ekre

* Import examples from MakieRecipes

* add separately

* dev

* $(mktemp -d)

* Update .github/workflows/CI.yml

Co-Authored-By: Anshul Singhvi <asinghvi17@simons-rock.edu>

* use temp_for_test

* fix typo

* Update .github/workflows/CI.yml

* ensure that images are uploaded

* Pass a begin block to testset

* fix the macro

* seriously, I forgot .png?

* Update .travis.yml

* Fix split_attribute (#53)

* Fix a typo in the `recipe_pipeline!` constructor (#54)

* bump version

* fix time and period recipes

* bump version

* Fix typo (#56)

* implement `Base.axes` for `Volume`

* bump version

* Update group.jl

* implement iterate for Surface and Volume

* bump version

* use NaNMath log functions

* Add one_arg_shorthands macro (#73)

* Add one_arg_shorthands macro

* export one_arg_shorthands

* patch version [skip ci]

* Add :mesh3d as 3d series type (#62)

* 0.1.12 [skip ci]

* add compat for NaNMath

* dispatch processing of axis args on the plot object (#63)

* dispatch processing of axis args on the plot object

* Update type_recipe.jl

* Update type_recipe.jl

* Update type_recipe.jl

* add to API

* Update api.jl

* 0.1.13

* remove one_arg_shorthands macro (#74)

It didn't work out as intended

* 1.1.0

* more friendly error when x,y shape mis-match

* AbstractDict plot sorted

* more friendly error when x,y shape mis-match (#65)

* more friendly error when x,y shape mis-match

* don't touch z

* Update src/user_recipe.jl

Co-authored-by: Daniel Schwabeneder <daschw@disroot.org>

* switch to github-actions and update runtests.jl to run Plots test images

* update CI.yml

* keep makie tests

* move `signature_string` to RecipesPipeline

* minor version bump

* Revert "minor version bump"

This reverts commit 63c713b7808adf305484a9724cef9eabae2a0702.

* move `warn_on_recipe_aliases!` from Plots and add some `@nospecialize`

* add CompileBot

* minor version bump

* add precompile statements

* bump version

* add new line at end of file

* add recipe for list of NamedTuples

* add newline

* update tagbot action

* add recipe for list of NamedTuples

* move `warn_on_recipe_aliases!` from Plots and add some `@nospecialize`

* update tagbot action

* Fix broken histogram and stepbins plotting

* Increase package version to v0.2.1

* Update precompile_*.jl file

* add TestImages test dependency

* refine friendly error (#75)

* Update precompile_*.jl file

* don't stringify argument to `warn_on_recipe_aliases!` early
needs matching Plots changes

* minor release

* add `@nospecialize` annotations

* release

* update CompileBot

* update TESTCMD in CI

* fix TESTCMD in compilebot action

* Update precompile_*.jl file

* release

* Update README.md

[skip ci]

* don't catch all the MethodErrors (#87)

* don't catch all the MethodErrors

* remove `@show`

* 0.3.3 [skip ci]

* add mesh3d for GR

* v0.3.4

* Small improvement in inferrability (#82)

* 1.1.2 [skip ci]

* CI: tentative fix

* CI: add LinearAlgebra (#96)

Co-authored-by: t-bltg <t-bltg@users.noreply.github.com>

* Test for error value from `apply_recipe` fallback. (#95)

* v0.3.5 [skip ci]

* Add `Downloads` test dependency

Complement #3766

* Remove try/catch needed for compatibility with Plots.jl v1.21.0 and earlier (#97)

* Improve groups perf from O(MxN) to O(M) (#98)

* Update MakieRecipes URL

* Update precompile_*.jl file (#91)

* v0.3.6 [skip ci]

* Revert try/catch for patch version

* v0.3.7 (#101) [skip ci]

* v0.4.0 (#102) [skip ci]

* Avoid Vararg UnionAll dispatch (#104)

* Avoid Vararg UnionAll dispatch

Fixes JuliaPlots/RecipesPipeline.jl#103

* fix fix

Co-authored-by: Simon Christ <SimonChrist@gmx.de>

* 0.4.1 [skip ci]

* move layout macro from plots (#85)

* 1.2.0 [skip ci]

* remove pct

* 1.2.1 [skip ci]

* Update Project.toml

* respect defaults for fillrange and ribbon (#106)

* respect defaults for fillrange and ribbon

* remove fillrange and ribbon handling from RecipesPipeline

* update ci

* set version

* Update CI.yml

* move documentation to gh-actions

* update run commands

* Update Documentation.yml

* Allow `NanMath` 1.0 - bump version (#108)

Co-authored-by: t-bltg <tf.bltg@gmail.com>

* Fix `unzip` for empty vectors (#110)

* 0.5.2 [skip ci]

* update url with https://docs.juliaplots.org/stable/generated/supported/#Keyword-Arguments (#89)

* Update precompile_*.jl file (#109)

Co-authored-by: t-bltg <t-bltg@users.noreply.github.com>

* run  snoopcompile on pust to master only

* update compat bounds (#111)

* 0.6.0 [skip ci]

* Update precompile_*.jl file (#112)

Co-authored-by: t-bltg <t-bltg@users.noreply.github.com>

* `SnoopCompile` labels

* use ssh key for `TagBot` (#91)

* fix julia scripts in markdown (#90)

* add missing language specification in md

* replace type with struct

* fix `SnoopCompile` (#113)

* update compat bounds

* run snoop on master only

* update precompile

* Update precompile_*.jl file (#114)

Co-authored-by: t-bltg <t-bltg@users.noreply.github.com>

* 0.6.1 [skip ci]

* fix plotting `Union{Missing,Real}` arrays (#116)

* Update precompile_*.jl file (#115)

Co-authored-by: t-bltg <t-bltg@users.noreply.github.com>

* 0.6.2 [skip ci]

* fix formatters (#118)

* 0.6.3 [skip ci]

* Update precompile_*.jl file (#117)

Co-authored-by: BeastyBlacksmith <BeastyBlacksmith@users.noreply.github.com>

* Create invalidations.yml (#93)

This is based on https://github.com/julia-actions/julia-invalidations. Adding such checks came up in https://discourse.julialang.org/t/potential-performance-regressions-in-julia-1-8-for-special-un-precompiled-type-dispatches-and-how-to-fix-them/86359. I suggest to add this check here since this package is widely used as a dependency.

* rework precompilation using `SnoopPrecompile` - document `@layout` (#94)

* document `@layout`

* rewok precompile statements using `SnoopPrecompile`

* add ci

* bump julia to `1.6` for failing CI

* 1.3.0

* more efficient `DefaultsDict` iteration (#121)

* bump julia version in `ci` (#122)

* 0.6.4

* Add methods to access separate keysets of the DefaultsDict (#124)

* bump version [skip ci]

* DefaultsDict - correctness and performance tweaks for large numbers of series (#126)

* 0.6.6 [skip ci]

* Fix a deprecated syntax in docs of macro `@recipe` (#95)

* fix broken docs

* remove

* remove un-needed files

* RP tests

Co-authored-by: Daniel Schwabeneder <daschw@disroot.org>
Co-authored-by: Sebastian Micluța-Câmpeanu <m.c.sebastian95@gmail.com>
Co-authored-by: Sebastian Micluța-Câmpeanu <31181429+SebastianM-C@users.noreply.github.com>
Co-authored-by: Anshul Singhvi <asinghvi17@simons-rock.edu>
Co-authored-by: Lirimy <31124605+Lirimy@users.noreply.github.com>
Co-authored-by: mtsch <matijacufar@gmail.com>
Co-authored-by: Simon Christ <SimonChrist@gmx.de>
Co-authored-by: JonasIsensee <jonas.isensee@web.de>
Co-authored-by: Michael Abbott <me@pseudomac>
Co-authored-by: Benoit Pasquier <4486578+briochemc@users.noreply.github.com>
Co-authored-by: Michael Krabbe Borregaard <mkborregaard@snm.ku.dk>
Co-authored-by: Adrian Dawid <dwd31415@users.noreply.github.com>
Co-authored-by: Moelf <proton@jling.dev>
Co-authored-by: Oliver Schulz <oschulz@mpp.mpg.de>
Co-authored-by: daschw <daschw@users.noreply.github.com>
Co-authored-by: Moelf <Moelf@users.noreply.github.com>
Co-authored-by: Jeremy Bejanin <jeremy.bejanin@gmail.com>
Co-authored-by: t-bltg <t-bltg@users.noreply.github.com>
Co-authored-by: Tim Holy <tim.holy@gmail.com>
Co-authored-by: Nicholas Bauer <nicholasbauer@outlook.com>
Co-authored-by: Mike Keehan <21029749+mdkeehan@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Christopher Rackauckas <chrisrackauckas@gmail.com>
Co-authored-by: Kristoffer Carlsson <kcarlsson89@gmail.com>
Co-authored-by: Yuto Horikawa <hyrodium@gmail.com>
Co-authored-by: Rafael Schouten <rafaelschouten@gmail.com>
Co-authored-by: MrHenning <5331081+MrHenning@users.noreply.github.com>
Co-authored-by: BeastyBlacksmith <BeastyBlacksmith@users.noreply.github.com>
Co-authored-by: Hendrik Ranocha <ranocha@users.noreply.github.com>
Co-authored-by: Ryan <25192197+singularitti@users.noreply.github.com>
Jonas-a-Zimmermann pushed a commit to Jonas-a-Zimmermann/Plots.jl that referenced this pull request Oct 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants