2

I want to generate one plot which is half cartesian and half polar. for e.g. gaussian curve half side in polar format and other half in cartesian format. which is the best way?

plot which is half cartesian and half polar

I have tried with sharing y axis but not succesful in taking two different types formats for one plot.

import matplotlib.pyplot as plt
import numpy as np

theta = np.linspace(0,(np.pi)/2)
r = np.sin(theta)

fig = plt.figure()
ax = fig.add_subplot(211, polar=True)
c = ax.scatter(theta, r, c=r, s=5, cmap='hsv', alpha=0.85)

ax.set_thetamin(0)
ax.set_thetamax(90)

ax1=fig.add_subplot(212) #, sharey='ax')
fig, (c, d) = plt.subplots(ncols=2,sharey=True)
d=ax1.scatter(theta,r)
plt.show() 
Dour High Arch
  • 21,513
  • 29
  • 75
  • 90
pjain
  • 21
  • 1
  • 3

1 Answers1

5
import matplotlib.pyplot as plt
import numpy as np

theta = np.linspace(0,(np.pi)/2)
r = np.sin(theta)

fig = plt.figure(figsize=(6.4, 3.25))
fig.subplots_adjust(wspace=0)
ax1 = fig.add_subplot(121)
ax1.grid()
ax2 = fig.add_subplot(122, polar=True)
ax2.set_thetamin(0)
ax2.set_thetamax(90)

ax1.set_ylim(0, 1.05)
ax2.set_ylim(0, 1.05)

sc1 = ax1.scatter(np.rad2deg(theta), r, c=r, s=5, cmap='hsv', alpha=0.85)
sc2 = ax2.scatter(theta,r, c=r, s=5, cmap='hsv', alpha=0.85)
plt.show() 

enter image description here

ImportanceOfBeingErnest
  • 321,279
  • 53
  • 665
  • 712