Python Matplotlib polar Labeling -
hi im wishing label polar bar chart in form whereby labels rotating differing amounts can read clock. know there rotation in plt.xlabel rotate 1 amount have many values , not have them crossing graph.
this figuratively graph orientations in same way, akin this; need using matplotlib , pandas if possible. in advance help!
some example names might farming, generalists, food , drink if these not correctly rotated overlap graph , difficult read.
from pandas import dataframe,series import pandas pd import matplotlib.pylab plt pylab import * import numpy np data = pd.read_csv('/.../data.csv') data=dataframe(data) n = len(data) data1=dataframe(data,columns=['x']) data1=data1.get_values() plt.figure(figsize=(8,8)) ax = plt.subplot(projection='polar') plt.xlabel("aas",fontsize=24) ax.set_theta_zero_location("n") bars = ax.bar(theta, data1,width=width, bottom=0.0,color=colours)
i label bars according names can obtain in list, there number of values , able read data names.
the very meager beginnings of answer (i doing similar, threw quick hack go in right direction):
# number of labels you'd in [521]: n = 5 # on circle show in [522]: theta = numpy.linspace(0., 2 * numpy.pi, n + 1, endpoint = true) in [523]: theta = theta[1:] # create figure in [524]: fig = plt.figure(figsize = (6,6), facecolor = 'white', edgecolor = none) # create axis, notice polar = true in [525]: ax = plt.subplot2grid((1, 1), (0,0), polar = true) # create white bars you're focusing on labels in [526]: ax.bar(theta, numpy.ones_like(theta), align = 'center', ...: color = 'white', edgecolor = 'white') # create text you're looking add, here use numbers counter = 1 n in [527]: counter = 1 in [528]: t, o in zip(theta, numpy.ones_like(theta)): ...: ax.text(t, 1 - .1, counter, horizontalalignment = 'center', verticalalignment = 'center', rotation = t * 100) ...: counter += 1 in [529]: ax.set_yticklabels([]) in [530]: ax.set_xticklabels([]) in [531]: ax.grid(false) in [531]: plt.show()
Comments
Post a Comment