I have plots like this
fig = plt.figure()
desire_salary = (df[(df['inc'] <= int(salary_people))])
print desire_salary
# Create the pivot_table
result = desire_salary.pivot_table('city', 'cult', aggfunc='count')
# plot it in a separate step. this returns the matplotlib axes
ax = result.plot(kind='bar', alpha=0.75, rot=0, label="Presence / Absence of cultural centre")
ax.set_xlabel("Cultural centre")
ax.set_ylabel("Frequency")
ax.set_title('The relationship between the wage level and the presence of the cultural center')
plt.show()
I want to add this to subplot
. I try
fig, ax = plt.subplots(2, 3)
...
ax = result.add_subplot()
but it returns AttributeError: 'Series' object has no attribute 'add_subplot'`. How can I check this error?
matplotlib.pyplot
has the concept of the current figure and the current axes. All plotting commands apply to the current axes.
import matplotlib.pyplot as plt
fig, axarr = plt.subplots(2, 3) # 6 axes, returned as a 2-d array
#1 The first subplot
plt.sca(axarr[0, 0]) # set the current axes instance to the top left
# plot your data
result.plot(kind='bar', alpha=0.75, rot=0, label="Presence / Absence of cultural centre")
#2 The second subplot
plt.sca(axarr[0, 1]) # set the current axes instance
# plot your data
#3 The third subplot
plt.sca(axarr[0, 2]) # set the current axes instance
# plot your data
Demo:
The source code,
import matplotlib.pyplot as plt
fig, axarr = plt.subplots(2, 3, sharex=True, sharey=True) # 6 axes, returned as a 2-d array
for i in range(2):
for j in range(3):
plt.sca(axarr[i, j]) # set the current axes instance
axarr[i, j].plot(i, j, 'ro', markersize=10) # plot
axarr[i, j].set_xlabel(str(tuple([i, j]))) # set x label
axarr[i, j].get_xaxis().set_ticks([]) # hidden x axis text
axarr[i, j].get_yaxis().set_ticks([]) # hidden y axis text
plt.show()
result
is of pandas.Series type, which doesn't have add_subplot()
method.
use fig.add_subplot(...)
instead
Here is an example (using seaborn module):
labels = df.columns.values
fig, axes = plt.subplots(nrows = 3, ncols = 4, gridspec_kw = dict(hspace=0.3),figsize=(12,9), sharex = True, sharey=True)
targets = zip(labels, axes.flatten())
for i, (col,ax) in enumerate(targets):
sns.boxplot(data=df, ax=ax, color='green', x=df.index.month, y=col)
You can use pandas plots instead of seaborn
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.