-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Merged streamline examples #8336
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
Changes from 1 commit
bf2b43b
92b1196
913fdb7
d56b5ce
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
""" | ||
========== | ||
Streamplot | ||
========== | ||
A streamplot, or streamline plot, is used to display 2D vector fields. This | ||
example shows a few features of the stream plot function: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. stream plot <- streamplot? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again, when it comes to English, I may be totally wrong, but I think "the streamplot function" may be more correct than the current "the stream plot function", as it is refering to the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think generally, "streamline" is a word and "streamplot" is not, unless you're referring to the function itself (as in this case.) |
||
|
||
* Varying the color along a streamline. | ||
* Varying the density of streamlines. | ||
* Varying the line width along a stream line. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. stream line <- streamline? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. streamline |
||
* Controlling the start points of streamlines. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. start points <- starting points? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. |
||
* Streamlines skipping masked regions and NaN values. | ||
""" | ||
import numpy as np | ||
import matplotlib.pyplot as plt | ||
|
||
w = 3 | ||
Y, X = np.mgrid[-w:w:100j, -w:w:100j] | ||
U = -1 - X**2 + Y | ||
V = 1 + X - Y**2 | ||
speed = np.sqrt(U*U + V*V) | ||
|
||
fig = plt.figure() | ||
|
||
# Varying density along a streamline | ||
ax0 = fig.add_subplot(321) | ||
ax0.streamplot(X, Y, U, V, density=[0.5, 1]) | ||
ax0.set_title('Varying Density') | ||
|
||
# Varying color along a streamline | ||
ax1 = fig.add_subplot(322) | ||
strm = ax1.streamplot(X, Y, U, V, color=U, linewidth=2, cmap=plt.cm.autumn) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. plt.cm.autmn <- 'autumn'? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. |
||
fig.colorbar(strm.lines) | ||
ax1.set_title('Varying color') | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Varying Color? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. |
||
|
||
# Varying line width along a streamline | ||
ax2 = fig.add_subplot(323) | ||
lw = 5*speed / speed.max() | ||
ax2.streamplot(X, Y, U, V, density=0.6, color='k', linewidth=lw) | ||
ax2.set_title('Varying Line Width') | ||
|
||
# Controlling the starting points of the streamlines | ||
X, Y = (np.linspace(-3, 3, 100), | ||
np.linspace(-3, 3, 100)) | ||
U, V = np.mgrid[-3:3:100j, 0:0:100j] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Any reason for changing the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I have kept U, V exactly same as they are in previous streamplot_demo_start_points.py. But if I comment out above lines and use same U,V everywhere then I get this plot - There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh I think that I understand why the current situation was weird for both of us! The current example in the official docs is indeed the one that you are refering to. However, the starting point example was changed in #6672 (by myself, which is why I was having the feeling that you changed U and V here) to use the same data as the other streamplot examples, which I think is really more demonstrative to show the different plotting options of |
||
seed_points = np.array([[-2, -1, 0, 1, 2, -1], [-2, -1, 0, 1, 2, 2]]) | ||
|
||
ax3 = fig.add_subplot(324) | ||
strm = ax3.streamplot(X, Y, U, V, color=U, linewidth=2, | ||
cmap=plt.cm.autumn, start_points=seed_points.T) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. plt.cm.autumn <- 'autumn'? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. |
||
fig.colorbar(strm.lines) | ||
ax3.set_title('Controlling Starting Points') | ||
|
||
# Displaying the starting points with red symbols. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. They're blue, not red. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. |
||
ax3.plot(seed_points[0], seed_points[1], 'bo') | ||
|
||
ax3.axis((-3, 3, -3, 3)) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I forgot to comment on this one during my review, sorry. Is this line really needed (I do not see the equivalent for the previous subplots)? If indeed it is and one actually uses the same dummy data accross all the subplots, I would then rather suggest using There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Other subplots were going from -3 to 3 but this one was not, so probably this line was put there to have uniformity in all plots. I have kept this. But it can be deleted considering this is supposed to be an example, thus it should use minimal code to achieve target. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You are right. Due to the reduced amount of streamlines that are plotted, it seems like the axis is not exactly the same as for the other plots. So it might be wiser to keep it :). 👍 for the new version |
||
|
||
# Create a mask | ||
w = 3 | ||
Y, X = np.mgrid[-w:w:100j, -w:w:100j] | ||
U = -1 - X**2 + Y | ||
V = 1 + X - Y**2 | ||
speed = np.sqrt(U*U + V*V) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If I'm not mistaken, these are the same values as the ones at the top. Maybe give the ones for There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oops, this comment is supposed to be about lines 62-65. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No, U,V are being changed at line 47-49. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If one decides to always plot the same data among all the different subplots, the 5 lines above could be deleted. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Huh, why is this comment here?! This is the opposite of what I had in mind ^^... Actually lines 19-23 would be the only place where I would suggest to create all the dummy data! |
||
|
||
mask = np.zeros(U.shape, dtype=bool) | ||
mask[40:60, 40:60] = True | ||
U[:20, :20] = np.nan | ||
U = np.ma.array(U, mask=mask) | ||
|
||
ax4 = fig.add_subplot(325) | ||
ax4.streamplot(X, Y, U, V, color='r') | ||
ax4.set_title('Streamline with Masking') | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Plural form (as there are several streamlines), or "Streamplot with Masking"? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Changed to "Streamplot with masking". |
||
|
||
ax4.imshow(~mask, extent=(-w, w, -w, w), alpha=0.5, | ||
interpolation='nearest', cmap=plt.cm.gray, aspect='auto') | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. plt.cm.gray <- 'gray'? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. |
||
|
||
plt.tight_layout() | ||
plt.show() |
This file was deleted.
This file was deleted.
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure that it is a mandatory requirement, but you may want to add a blank line betwenn the second
=====
line and the first line of the paragraph. Maybe @NelleV would be able to confirm what SG and rST really require :).There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think it is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then one remaining argument in favor of adding a blank line would be consistency among our example scripts, as a lot of other examples in the docs seem to have one such blank line ;). But I am also fine with no blank line if SG and rST are OK!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Blank line added to maintain consistency among all examples.