Query about streamplot

Hii Folks

I have an array with dimension (plev: 7, lat: 81). I was trying to draw
streamline plot for Omega and V wind [Hadley cell]. I am facing some error
with* plt.streamplot* as it says that both the dimension should be of equal
size (i.e. N * N ). Is there any other way to create a streamline plot for
the data having unequal values along both the dimensions?

I seek help of the community in this regard.

I hope I framed my question correctly. Please let me know if I need to
clarify more details.

Thank you

···

--

Dhirendra Kumar
PhD Student
School of Environmental Sciences, JNU
New Delhi (India)
Contact: +91 9910778043
Alternate email: dhirendra.cub at outlook.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20190417/ac5bf4c4/attachment.html>

Hi Kumar,

Could provided a snippet with a (standalone) minimal working example of what you have tried ?

AFAICT, looking at https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.streamplot.html it does not look like X and Y arrays of coordinates have to be of equal length (but the velocity arrays U and V should have relevant dimensions relative to X and Y).

Best regards,
Adrien

···

On April 16, 2019 11:05:01 PM GMT+02:00, Dhirendra Kumar <dhirendra.cub at gmail.com> wrote:

Hii Folks

I have an array with dimension (plev: 7, lat: 81). I was trying to draw
streamline plot for Omega and V wind [Hadley cell]. I am facing some
error
with* plt.streamplot* as it says that both the dimension should be of
equal
size (i.e. N * N ). Is there any other way to create a streamline plot
for
the data having unequal values along both the dimensions?

I seek help of the community in this regard.

I hope I framed my question correctly. Please let me know if I need to
clarify more details.

Thank you

--
Envoy? de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma bri?vet?.

Kumar,

FWIW, based on the [streamplot
example](https://matplotlib.org/gallery/images_contours_and_fields/plot_streamplot.html)
in the gallery, the following snippet seems to be working just fine
(with Matplotlib 3.0.1) ?even though? the amount of X and Y coordinate
values is (Nx, Ny) = (100, 50).

import numpy as np
import matplotlib.pyplot as plt

# Dummy data
w = 3
Nx, Ny = 100, 50
Y, X = np.mgrid[-w:w:50j, -w:w:100j]
U = -1 - X**2 + Y
V = 1 + X - Y**2

fig, ax = plt.subplots()

ax.streamplot(X, Y, U, V)
ax.set_title(f"{Nx/Ny:g}? more points along X than Y")

Best,
Adrien

Le 17/04/2019 ? 08:14, Adrien VINCENT a ?crit?:

Hi Kumar,

Could provided a snippet with a (standalone) minimal working example of what you have tried ?

AFAICT, looking at https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.streamplot.html it does not look like X and Y arrays of coordinates have to be of equal length (but the velocity arrays U and V should have relevant dimensions relative to X and Y).

Best regards,
Adrien

Hii Folks

I have an array with dimension (plev: 7, lat: 81). I was trying to draw
streamline plot for Omega and V wind [Hadley cell]. I am facing some
error
with* plt.streamplot* as it says that both the dimension should be of
equal
size (i.e. N * N ). Is there any other way to create a streamline plot
for
the data having unequal values along both the dimensions?

I seek help of the community in this regard.

I hope I framed my question correctly. Please let me know if I need to
clarify more details.

Thank you

-------------- next part --------------
A non-text attachment was scrubbed...
Name: streamplot_example_for_kumar.png
Type: image/png
Size: 86118 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20190417/d65f57ae/attachment-0001.png&gt;

···

On April 16, 2019 11:05:01 PM GMT+02:00, Dhirendra Kumar <dhirendra.cub at gmail.com> wrote:

Hii Adrien

Thanks for the reply. I have tried your example and could replicate it. But
in case of my script I have two variables:

*V* and *Omega* having sizes:
([('plev', 12), ('lat', 81)]))
([('plev', 12), ('lat', 81)]))

Plev has to be plotted on y axis and lat has to be plotted on x axis.

I am using following lines to create the plot:

plt.subplot(331)
plt.contourf(CC_W_CON11,cmap='RdBu')
plt.streamplot(X, Y, Omega, V)

This gives me an error as:

  File
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/pyplot.py", line
2951, in streamplot
    if data is not None else {}))
  File
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/__init__.py",
line 1810, in inner
    return func(ax, *args, **kwargs)
  File
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/axes/_axes.py",
line 4882, in streamplot
    integration_direction=integration_direction)
  File
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/streamplot.py",
line 79, in streamplot
    grid = Grid(x, y)
  File
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/streamplot.py",
line 311, in __init__
    raise ValueError("The rows of 'x' must be equal")
*ValueError: The rows of 'x' must be equal*

Could you please look if there is any mistake ??

Thanks

···

On Wed, Apr 17, 2019 at 1:27 PM vincent.adrien at gmail.com < vincent.adrien at gmail.com> wrote:

Kumar,

FWIW, based on the [streamplot
example](
https://matplotlib.org/gallery/images_contours_and_fields/plot_streamplot.html
)
in the gallery, the following snippet seems to be working just fine
(with Matplotlib 3.0.1) ?even though? the amount of X and Y coordinate
values is (Nx, Ny) = (100, 50).

import numpy as np
import matplotlib.pyplot as plt

# Dummy data
w = 3
Nx, Ny = 100, 50
Y, X = np.mgrid[-w:w:50j, -w:w:100j]
U = -1 - X**2 + Y
V = 1 + X - Y**2

fig, ax = plt.subplots()

ax.streamplot(X, Y, U, V)
ax.set_title(f"{Nx/Ny:g}? more points along X than Y")

Best,
Adrien

Le 17/04/2019 ? 08:14, Adrien VINCENT a ?crit :
> Hi Kumar,
>
> Could provided a snippet with a (standalone) minimal working example of
what you have tried ?
>
> AFAICT, looking at
https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.streamplot.html
it does not look like X and Y arrays of coordinates have to be of equal
length (but the velocity arrays U and V should have relevant dimensions
relative to X and Y).
>
> Best regards,
> Adrien
>
>
>
> On April 16, 2019 11:05:01 PM GMT+02:00, Dhirendra Kumar < > dhirendra.cub at gmail.com> wrote:
>> Hii Folks
>>
>> I have an array with dimension (plev: 7, lat: 81). I was trying to draw
>> streamline plot for Omega and V wind [Hadley cell]. I am facing some
>> error
>> with* plt.streamplot* as it says that both the dimension should be of
>> equal
>> size (i.e. N * N ). Is there any other way to create a streamline plot
>> for
>> the data having unequal values along both the dimensions?
>>
>> I seek help of the community in this regard.
>>
>> I hope I framed my question correctly. Please let me know if I need to
>> clarify more details.
>>
>> Thank you
>

--

Dhirendra Kumar
PhD Student
School of Environmental Sciences, JNU
New Delhi (India)
Contact: +91 9910778043
Alternate email: dhirendra.cub at outlook.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20190417/65e6072a/attachment.html&gt;

Kumar,

As far as I understand it, it looks like your issue may be due to X (and
possibly Y) being 2d-array. If V and Omega are arrays with shape **(Ny,
Nx)**, then X and Y should be **1d-arrays** with Nx and Ny elements
respectively. For simplicity sake (I guess), there is actually a special
(not very well documented) case if X and Y are 2d-arrays :
- each row of X has to be the same;
- each column in Y has to be same.

The error that you saw suggest that the rows in your array X differ from
one another.

Adrien

Le 17/04/2019 ? 11:55, Dhirendra Kumar a ?crit?:

···

Hii Adrien

Thanks for the reply. I have tried your example and could replicate it.
But in case of my script I have two variables:

*V* and *Omega* having sizes:
([('plev', 12), ('lat', 81)]))
([('plev', 12), ('lat', 81)]))

Plev has to be plotted on y axis and lat has to be plotted on x axis.?

I am using following lines to create the plot:

plt.subplot(331)
plt.contourf(CC_W_CON11,cmap='RdBu')
plt.streamplot(X, Y, Omega,? V)

This gives me an error as:

? File
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/pyplot.py",
line 2951, in streamplot
? ? if data is not None else {}))
? File
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/__init__.py",
line 1810, in inner
? ? return func(ax, *args, **kwargs)
? File
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/axes/_axes.py",
line 4882, in streamplot
? ? integration_direction=integration_direction)
? File
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/streamplot.py",
line 79, in streamplot
? ? grid = Grid(x, y)
? File
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/streamplot.py",
line 311, in __init__
? ? raise ValueError("The rows of 'x' must be equal")
*ValueError: The rows of 'x' must be equal*
*
*
Could you please look if there is any mistake ??

Thanks

On Wed, Apr 17, 2019 at 1:27 PM vincent.adrien at gmail.com > <mailto:vincent.adrien at gmail.com> <vincent.adrien at gmail.com > <mailto:vincent.adrien at gmail.com>> wrote:

    Kumar,

    FWIW, based on the [streamplot
    example](https://matplotlib.org/gallery/images_contours_and_fields/plot_streamplot.html)
    in the gallery, the following snippet seems to be working just fine
    (with Matplotlib 3.0.1) ?even though? the amount of X and Y coordinate
    values is (Nx, Ny) = (100, 50).

    ```python
    import numpy as np
    import matplotlib.pyplot as plt

    # Dummy data
    w = 3
    Nx, Ny = 100, 50
    Y, X = np.mgrid[-w:w:50j, -w:w:100j]
    U = -1 - X**2 + Y
    V = 1 + X - Y**2

    fig, ax = plt.subplots()

    ax.streamplot(X, Y, U, V)
    ax.set_title(f"{Nx/Ny:g}? more points along X than Y")
    ```

    Best,
    Adrien

    Le 17/04/2019 ? 08:14, Adrien VINCENT a ?crit?:
    > Hi Kumar,
    >
    > Could provided a snippet with a (standalone) minimal working
    example of what you have tried ?
    >
    > AFAICT, looking at
    https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.streamplot.html
    it does not look like X and Y arrays of coordinates have to be of
    equal length (but the velocity arrays U and V should have relevant
    dimensions relative to X and Y).
    >
    > Best regards,
    > Adrien
    >
    >
    >
    > On April 16, 2019 11:05:01 PM GMT+02:00, Dhirendra Kumar > <dhirendra.cub at gmail.com <mailto:dhirendra.cub at gmail.com>> wrote:
    >> Hii Folks
    >>
    >> I have an array with dimension (plev: 7, lat: 81). I was trying
    to draw
    >> streamline plot for Omega and V wind [Hadley cell].? I am facing some
    >> error
    >> with* plt.streamplot* as it says that both the dimension should be of
    >> equal
    >> size (i.e. N * N ). Is there any other way to create a streamline
    plot
    >> for
    >> the data having unequal values along both the dimensions?
    >>
    >> I seek help of the community in this regard.
    >>
    >> I hope I framed my question correctly.? Please let me know if I
    need to
    >> clarify more details.
    >>
    >> Thank you
    >

--

Dhirendra Kumar
PhD Student
School of Environmental Sciences, JNU
New Delhi (India)
Contact: +91 9910778043
Alternate email: dhirendra.cub at outlook.com
<mailto:dhirendra.cub at outlook.com>

Hii Adrien

I guess I have found the problem but don't know how to go about it. The
documentation here (
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.streamplot.html) says
that x and y should be:

*x*, *y* : 1d arraysan *evenly spaced* grid.but in my case although I have
the same shape of the V and Omega values, it is unevenly distributed as a
grid. The plev values are: [1000. 925. 850. 700. 600. 500. 400.
300. 250. 200. 150. 100.] while x varies from 0-40 N at an interval of
0.5. So apparently it produces an unevely distributed gridspace in lat-plev
(xy).Please let me know what you think about this.ThanksDhirendra

···

On Wed, Apr 17, 2019 at 7:51 PM vincent.adrien at gmail.com < vincent.adrien at gmail.com> wrote:

Kumar,

As far as I understand it, it looks like your issue may be due to X (and
possibly Y) being 2d-array. If V and Omega are arrays with shape **(Ny,
Nx)**, then X and Y should be **1d-arrays** with Nx and Ny elements
respectively. For simplicity sake (I guess), there is actually a special
(not very well documented) case if X and Y are 2d-arrays :
- each row of X has to be the same;
- each column in Y has to be same.

The error that you saw suggest that the rows in your array X differ from
one another.

Adrien

Le 17/04/2019 ? 11:55, Dhirendra Kumar a ?crit :
> Hii Adrien
>
> Thanks for the reply. I have tried your example and could replicate it.
> But in case of my script I have two variables:
>
> *V* and *Omega* having sizes:
> ([('plev', 12), ('lat', 81)]))
> ([('plev', 12), ('lat', 81)]))
>
> Plev has to be plotted on y axis and lat has to be plotted on x axis.
>
> I am using following lines to create the plot:
>
> plt.subplot(331)
> plt.contourf(CC_W_CON11,cmap='RdBu')
> plt.streamplot(X, Y, Omega, V)
>
> This gives me an error as:
>
> File
> "/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/pyplot.py",
> line 2951, in streamplot
> if data is not None else {}))
> File
> "/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/__init__.py",
> line 1810, in inner
> return func(ax, *args, **kwargs)
> File
>
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/axes/_axes.py",
> line 4882, in streamplot
> integration_direction=integration_direction)
> File
>
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/streamplot.py",
> line 79, in streamplot
> grid = Grid(x, y)
> File
>
"/opt/apps/ANACONDA/lib/python3.7/site-packages/matplotlib/streamplot.py",
> line 311, in __init__
> raise ValueError("The rows of 'x' must be equal")
> *ValueError: The rows of 'x' must be equal*
> *
> *
> Could you please look if there is any mistake ??
>
> Thanks
>
>
> On Wed, Apr 17, 2019 at 1:27 PM vincent.adrien at gmail.com > > <mailto:vincent.adrien at gmail.com> <vincent.adrien at gmail.com > > <mailto:vincent.adrien at gmail.com>> wrote:
>
> Kumar,
>
> FWIW, based on the [streamplot
> example](
https://matplotlib.org/gallery/images_contours_and_fields/plot_streamplot.html
)
> in the gallery, the following snippet seems to be working just fine
> (with Matplotlib 3.0.1) ?even though? the amount of X and Y
coordinate
> values is (Nx, Ny) = (100, 50).
>
> ```python
> import numpy as np
> import matplotlib.pyplot as plt
>
> # Dummy data
> w = 3
> Nx, Ny = 100, 50
> Y, X = np.mgrid[-w:w:50j, -w:w:100j]
> U = -1 - X**2 + Y
> V = 1 + X - Y**2
>
> fig, ax = plt.subplots()
>
> ax.streamplot(X, Y, U, V)
> ax.set_title(f"{Nx/Ny:g}? more points along X than Y")
> ```
>
> Best,
> Adrien
>
> Le 17/04/2019 ? 08:14, Adrien VINCENT a ?crit :
> > Hi Kumar,
> >
> > Could provided a snippet with a (standalone) minimal working
> example of what you have tried ?
> >
> > AFAICT, looking at
>
https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.streamplot.html
> it does not look like X and Y arrays of coordinates have to be of
> equal length (but the velocity arrays U and V should have relevant
> dimensions relative to X and Y).
> >
> > Best regards,
> > Adrien
> >
> >
> >
> > On April 16, 2019 11:05:01 PM GMT+02:00, Dhirendra Kumar > > <dhirendra.cub at gmail.com <mailto:dhirendra.cub at gmail.com>> wrote:
> >> Hii Folks
> >>
> >> I have an array with dimension (plev: 7, lat: 81). I was trying
> to draw
> >> streamline plot for Omega and V wind [Hadley cell]. I am facing
some
> >> error
> >> with* plt.streamplot* as it says that both the dimension should
be of
> >> equal
> >> size (i.e. N * N ). Is there any other way to create a streamline
> plot
> >> for
> >> the data having unequal values along both the dimensions?
> >>
> >> I seek help of the community in this regard.
> >>
> >> I hope I framed my question correctly. Please let me know if I
> need to
> >> clarify more details.
> >>
> >> Thank you
> >
>
>
>
> --
> ========================================
> Dhirendra Kumar
> PhD Student
> School of Environmental Sciences, JNU
> New Delhi (India)
> Contact: +91 9910778043
> Alternate email: dhirendra.cub at outlook.com
> <mailto:dhirendra.cub at outlook.com>
> =========================================

--

Dhirendra Kumar
PhD Student
School of Environmental Sciences, JNU
New Delhi (India)
Contact: +91 9910778043
Alternate email: dhirendra.cub at outlook.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20190418/1c258bec/attachment.html&gt;