[DOC] New figure for the gallery (showcase section) by rougier · Pull Request #7072 · matplotlib/matplotlib · GitHub
Skip to content

[DOC] New figure for the gallery (showcase section)#7072

Merged
tacaswell merged 9 commits into
matplotlib:masterfrom
rougier:showcase
Sep 11, 2016
Merged

[DOC] New figure for the gallery (showcase section)#7072
tacaswell merged 9 commits into
matplotlib:masterfrom
rougier:showcase

Conversation

@rougier

@rougier rougier commented Sep 9, 2016

Copy link
Copy Markdown
Member

This is a figure for the showcase section. It shows the different elements composing a figure.

anatomy

@rougier rougier changed the title New figure for the gallery (showcase section) [DOC] New figure for the gallery (showcase section) Sep 9, 2016
Comment thread examples/showcase/anatomy.py Outdated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The two lines can be replaced by the following (which I find slightly more elegant):

fig, ax = plt.subplots(figsize=(8, 8), facecolor="w", subplot_kw={"aspect": 1})

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not too fond of this syntax, I find it more confusing.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think both ways are fine, But in the current I would replace the "matlab like" shorthand syntax

ax = plt.subplot(111, aspect=1)

with the more explicit version

ax = plt.subplot(1, 1, 1, aspect=1)

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.subplot

@jenshnielsen

Copy link
Copy Markdown
Member

Really cool and useful plot. We should perhaps find a way to integrate it into the prose docs too

@tacaswell

Copy link
Copy Markdown
Member

Should replace the image at http://matplotlib.org/faq/usage_faq.html#parts-of-a-figure

Comment thread examples/showcase/anatomy.py Outdated

# Axis
circle(0.5, 0.5)
text(0.5, 0.3, "Axis")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be 'Axes`

@tacaswell tacaswell added this to the 2.0 (style change major release) milestone Sep 9, 2016
@rougier

rougier commented Sep 9, 2016

Copy link
Copy Markdown
Member Author

I've added a commit to change the figure in the FAQ. I canot yet compile the documentation to check the result though.

@tacaswell

Copy link
Copy Markdown
Member

@rougier What is still blocking you on the docs?

@rougier

rougier commented Sep 9, 2016

Copy link
Copy Markdown
Member Author

Oh only local problems, mostly because matplotlib is already installed from what I've understood.

@NelleV

NelleV commented Sep 9, 2016

Copy link
Copy Markdown
Member

I can help with that if you come to see me.

On 9 September 2016 at 05:57, Nicolas P. Rougier notifications@github.com
wrote:

I've added a commit to change the figure in the FAQ. I canot yet compile
the documentation to check the result though.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
#7072 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AALR3kIUyWVGagbhEXSnJegIE62UVWAEks5qoVe0gaJpZM4J46gH
.

Comment thread examples/showcase/anatomy.py Outdated
edgecolor='none', facecolor='black', alpha=.025)
plt.axes().add_artist(circle)
circle = Circle(center, radius, clip_on=False, zorder=30,
edgecolor='black', facecolor='none', linewidth=1.0)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think all of this could be simplified to one Circle call with help of PathEffects.withStroke http://matplotlib.org/examples/pylab_examples/patheffect_demo.html

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not totally because of the transparency of the background (while the white outline is opaque)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Try this, very close to what you have

def circle(x, y, radius=0.15):
    from matplotlib.patheffects import withStroke
    circle = Circle((x, y), radius, clip_on=False, zorder=10, linewidth=1,
                    edgecolor='black', facecolor=(0, 0, 0, .0125),
                    path_effects=[withStroke(linewidth=5, foreground='w')])
    plt.axes().add_artist(circle)

@efiring

efiring commented Sep 9, 2016

Copy link
Copy Markdown
Member

This might further the misconception that markers must be made using scatter rather then plot. Would it be too cluttered it you were to illustrate the scatter plot using markers with varying size, and possibly color, and then show uniform markers in one of the two lines?

@QuLogic

QuLogic commented Sep 9, 2016

Copy link
Copy Markdown
Member

Have you tried building this figure with the 2.x branch? There are many small tweaks that may have been necessary before, but likely aren't now, e.g., there's no reason to turn off the frame legend now.

Also, the Figure and Axes annotations are a bit vague.

@Kojoley

Kojoley commented Sep 9, 2016

Copy link
Copy Markdown
Member

@rougier I have opened rougier#2 with circle creation simplification and OO modification.

@rougier

rougier commented Sep 9, 2016

Copy link
Copy Markdown
Member Author

@Kojoley Thanks, didn't know color arguments accept RGBA format. Your code much simpler now.

@rougier

rougier commented Sep 9, 2016

Copy link
Copy Markdown
Member Author

@efiring What would be the use case for scatter plot then ? It's seem reasonable to use scatter to plot a bunch of markers, no?

@NelleV

NelleV commented Sep 9, 2016

Copy link
Copy Markdown
Member

@efiring @rougier We've had this problem with plot vs scatter since a very very long time. I think that the fact we are having still this problem shows an interface and naming problem (ie, a bug). How complicated it would it be to fix scatter so that it behaves like plot when no size or color argument are provided?

@NelleV

NelleV commented Sep 9, 2016

Copy link
Copy Markdown
Member

@rougier the scatter plots is "supposed" to be used when displaying markers of different size or color (or both). It recomputes a bunch of elements for each marker you draw, while plot doesn't. It renders scatter plot quite inefficient both time wise and memory wise when used on large datasets.
There is absolutely no way a user would know this unless he/she had a look at the implementation.

@efiring

efiring commented Sep 9, 2016

Copy link
Copy Markdown
Member

@NelleV Rather than modify scatter to return completely different artists (Line2D versus PatchCollection) depending on its arguments, I think the problem is addressed better via documentation and examples. Using scatter when plot would suffice is inefficient for very large data sets, as you note, but otherwise not harmful.

@efiring

efiring commented Sep 9, 2016

Copy link
Copy Markdown
Member

@NelleV Note also that the argument lists for plot and scatter are very different, corresponding to the major differences between the artists they return.

@rougier

rougier commented Sep 11, 2016

Copy link
Copy Markdown
Member Author

Is it ready to merge or does it need more modifications ?

@tacaswell tacaswell merged commit 440adff into matplotlib:master Sep 11, 2016
tacaswell added a commit that referenced this pull request Sep 11, 2016
DOC: Replace anatomy of a plot figure
@tacaswell

Copy link
Copy Markdown
Member

backported to v2.x as ca51e8d

@QuLogic

QuLogic commented Sep 14, 2016

Copy link
Copy Markdown
Member

So we're keeping this with the ticks the wrong way?

@QuLogic

QuLogic commented Sep 14, 2016

Copy link
Copy Markdown
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants