kanayamalakar - 2 years ago 170

Python Question

I am trying to plot three different graphs in three sub-plots within a single figure. Also I want the first figure to be of double width than the other two. Accordingly I have used

`gs = gridspec.GridSpec(2, 2, width_ratios=[2,1], height_ratios=[1,1])`

But the output has all the figures plotted on ax3.

My code is given here

`import matplotlib`

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.mlab as mlab

import matplotlib.gridspec as gridspec

gs = gridspec.GridSpec(2, 2, width_ratios=[2,1], height_ratios=[1,1])

ax1=plt.subplot(gs[:,:-1])

ax2=plt.subplot(gs[:-1,-1])

ax3=plt.subplot(gs[-1,-1])

# ax 1

X=np.linspace(0,10,100)

Y=np.sin(X)

ax1 = plt.gca()

ax1.scatter(X, Y)

ax1.axis("tight")

ax1.set_title('ax1')

ax1.set_xlim([0,10])

ax1.set_ylim([-1,1])

plt.xticks([])

plt.yticks([])

# ax 2

ax2 = plt.gca()

vel=np.random.rand(1000)

n, bins, patches = plt.hist(vel, 10, normed=True, histtype='stepfilled', facecolor='green', alpha=1.0)

ax2.set_title('Velocity Distribution')

ax2.axis("tight")

plt.xticks([0,0.05,0.10])

plt.yticks([0,10,20])

# ax 3

Z=np.exp(X)

ax3.plot(X,Z,'red',lw=5)

plt.show()

Can somebody tell me how I can rectify this. Thank you in advance.

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

Fixed several lines. Please compare with your code.

```
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(2, 2, width_ratios=[2,1], height_ratios=[1,1])
ax1=plt.subplot(gs[:,:-1])
ax2=plt.subplot(gs[:-1,-1])
ax3=plt.subplot(gs[-1,-1])
# ax 1
X=np.linspace(0,10,100)
Y=np.sin(X)
#ax1 = plt.gca()
ax1.scatter(X, Y)
ax1.axis("tight")
ax1.set_title('ax1')
ax1.set_xlim([0,10])
ax1.set_ylim([-1,1])
# You can use ax1.set_xticks() and ax1.set_xticklabels() instead.
ax1.set_xticks([])
ax1.set_yticks([])
#plt.xticks([])
#plt.yticks([])
# ax 2
#ax2 = plt.gca()
vel=np.random.rand(1000)
n, bins, patches = ax2.hist(vel, 10, normed=True, histtype='stepfilled', facecolor='green', alpha=1.0)
ax2.set_title('Velocity Distribution')
ax2.axis("tight")
# You can use ax2.set_xticks() and ax2.set_xticklabels() instead.
ax2.set_xticks([0,0.5,1])
ax2.set_yticks([0,1,2])
#plt.xticks([0,0.05,0.10])
#plt.yticks([0,10,20])
# ax 3
Z=np.exp(X)
ax3.plot(X, Z,'red', lw=5)
# You can use ax3.set_xticks() and ax3.set_xticklabels() instead.
ax3.set_xticks([0, 5, 10])
ax3.set_yticks([0, 10000, 20000])
ax3.set_yticklabels(['0', '10K', '20K'])
plt.show()
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**