gpt4 book ai didi

python - 将现有绘图添加到轴/子图框架中

转载 作者:行者123 更新时间:2023-12-01 08:14:04 24 4
gpt4 key购买 nike

我有如下的df:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.DataFrame({
'Country': ["A", "B", "C", "D", "E", "F", "G"],
'Answer declined': [0.000000, 0.000000, 0.000000, 0.000667, 0.000833, 0.000833, 0.000000],
"Don't know": [0.003333, 0.000000, 0.000000, 0.001333, 0.001667, 0.000000, 0.000000],
"No": [0.769167, 0.843333, 0.762000, 0.666000, 0.721667, 0.721667, 0.775833],
"Yes": [0.227500, 0.156667, 0.238000, 0.332000, 0.275833, 0.277500, 0.224167]}, )
df.set_index("Country", inplace = True)

由于我有多个这样的df,我想从中创建绘图,因此我定义了以下函数:

def bar_plot(plot_df):
N = len(plot_df) # number of groups
ind = np.arange(N) # x locations for the groups
width = 0.35 # width of bars

p_s = []
p_s.append(plt.bar(ind, plot_df.iloc[:,0], width))
for i in range(1,len(plot_df.columns)):
p_s.append(plt.bar(ind, plot_df.iloc[:,i], width,
bottom=np.sum(plot_df.iloc[:,:i], axis=1)))

plt.ylabel('[%]')
plt.title('Responses by country')

x_ticks_names = tuple([item for item in plot_df.index])

plt.xticks(ind, x_ticks_names)
plt.yticks(np.arange(0, 1.1, 0.1)) # ticks from, to, steps
#if num_y_cats % 3 == 0: ncol = num_y_cats / 3
#else: ncol = num_y_cats % 3
ncol = 3
plt.legend(p_s, plot_df.columns,
bbox_to_anchor = (0.5, -0.25), # to the left; to the top
loc = 'lower center',
ncol = ncol,
borderaxespad = 0)
plt.show()
plt.close()

调用函数 (bar_plot(df)) 给出所需的绘图。但是,我想操纵/微调绘图,因此想要将绘图嵌入到 mpl figureaxe 但未能这样做,因为我不知道如何使其与行 p_s = []p_s.append(...).

有人可以帮我解决一下 fig = plt.figure()fig.add_axes()ax1 = Fig.add_subplot(111) 的位置吗 会去吗?

非常感谢! :)

最佳答案

您应该从函数中删除最后两行。必须在定义所有图形和子图后调用此行。

plt.show()
plt.close()

例如,从函数中删除这些行后,您可以使用不同的子图调用该函数:

plt.subplot(1,3,1)
bar_plot(df1)
plt.subplot(1,3,2)
bar_plot(df2)
plt.subplot(1,3,3)
bar_plot(df3)

最后:

plt.show()
plt.close()

我想这可行。

关于python - 将现有绘图添加到轴/子图框架中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55070327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com