我有一个绘制图表的函数。我可以用不同的变量调用这个图来改变图形。我想多次调用这个函数并将图形相互绘制,但不知道如何这样做
def plt_graph(x, graph_title, horiz_label):
df[x].plot(kind='barh')
plt.title(graph_title)
plt.ylabel("")
plt.xlabel(horiz_label)
plt_graph('gross','Total value','Gross (in millions)')
答案 0 :(得分:0)
我已经创建了一个非常容易实现此功能的工具。我一直在jupyter笔记本中使用它,发现它比一大堆图表更整洁。从此文件中复制Gridplot类:
https://github.com/simonm3/analysis/blob/master/analysis/plot.py
用法:
gridplot = Gridplot()
plt.plot(x)
plt.plot(y)
它显示网格中的每个新绘图,其中包含4个绘图。您可以更改图表的大小或每行的数量。它适用于plt.plot,plt.bar,plt.hist和plt.scatter。但是它确实需要你直接使用matplot而不是pandas。
如果您想将其关闭:
gridplot.off()
如果要将网格重置为位置1:
gridplot.on()
答案 1 :(得分:0)
如果你知道你想要产生的图的数量,你可以先创建你需要的子图
fig, axes = plt.subplots(nrows=1, ncols=5)
(在这种情况下为5)然后将轴提供给函数
def plt_graph(x, graph_title, horiz_label, ax):
df[x].plot(kind='barh', ax=ax)
最后,调用这样的每个情节
plt_graph("framekey", "Some title", "some label", axes[4])
(其中4代表第五个和最后一个情节)
答案 2 :(得分:0)
这是一种可以做到的方法。首先,创建包含轴对象的图形。使用这些轴,您可以使用画布,这是绘制每个图形的地方。
fig, ax = plt.subplots(1,2)
这里我创建了一个带有两个轴的图形。这是一行两列图。如果检查ax变量,您将看到两个对象。这就是我们将用于所有绘图的内容。现在,回到函数,让我们从一个简单的数据集开始并定义函数。
df = pd.DataFrame({"a": np.random.random(10), "b": np.random.random(10)})
def plt_graph(x, graph_title, horiz_label, ax):
df[x].plot(kind = 'barh', ax = ax)
ax.set_xlabel(horiz_label)
ax.set_title(graph_title)
然后,要调用该函数,您只需执行此操作:
plt_graph("a", "a", "a", ax=ax[0])
plt_graph("b", "b", "b", ax=ax[1])
请注意,您要将要创建的每个图形传递给您拥有的任何轴。在这种情况下,你有两个,你将第一个轴传递给第一个轴,依此类推。请注意,如果您在导入中包含seaborn(import seaborn as sns
),则seaborn样式将自动应用于您的图形。
这就是图表的样子。
在创建绘图函数时,您需要查看matplotlib的面向对象接口。