简体   繁体   English

如何将图添加到子图matplotlib

[英]How add plot to subplot matplotlib

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 . 我想将此添加到subplot I try 我尝试

fig, ax = plt.subplots(2, 3)
...
ax = result.add_subplot()

but it returns AttributeError: 'Series' object has no attribute 'add_subplot'`. 但返回AttributeError:“系列”对象没有属性“ add_subplot”。 How can I check this error? 如何检查此错误?

matplotlib.pyplot has the concept of the current figure and the current axes. matplotlib.pyplot具有当前图形和当前轴的概念。 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. result为pandas.Series类型,没有add_subplot()方法。

use fig.add_subplot(...) instead 使用fig.add_subplot(...)代替

Here is an example (using seaborn module): 这是一个示例 (使用seaborn模块):

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 您可以使用熊猫图代替seaborn

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM