Jim*_*y C 97 python matplotlib pandas
我有一些Pandas DataFrames共享相同的值规模,但具有不同的列和索引.在调用时df.plot()
,我会获得单独的绘图图像.我真正想要的是将它们全部放在与次要情节相同的情节中,但遗憾的是我没有想出一个如何并且非常欣赏一些帮助的解决方案.
jor*_*ris 200
您可以使用matplotlib手动创建子图,然后使用ax
关键字在特定子图上绘制数据框.例如,对于4个子图(2x2):
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=2)
df1.plot(ax=axes[0,0])
df2.plot(ax=axes[0,1])
...
Run Code Online (Sandbox Code Playgroud)
这axes
是一个包含不同子图轴的数组,您只需通过索引即可访问一个axes
.
如果你想有一个共享的X轴,那么你可以提供sharex=True
给plt.subplots
.
sed*_*deh 50
你可以看到e.gs. 在证明joris答案的文档中.另外,从文档,您也可以设置subplots=True
和layout=(,)
大熊猫内plot
功能:
df.plot(subplots=True, layout=(1,2))
Run Code Online (Sandbox Code Playgroud)
你也可以使用fig.add_subplot()
这需要插曲电网参数,如221,222,223,224,等,在后描述这里.在这个ipython笔记本中可以看到关于pandas数据框的情节的好例子,包括子图.
Dr.*_*lan 21
您可以使用 matplotlib 绘制多个 Pandas 数据框的多个子图,并使用一个简单的技巧来制作所有数据框的列表。然后使用 for 循环绘制子图。
工作代码:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# dataframe sample data
df1 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df2 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df3 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df4 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df5 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df6 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
#define number of rows and columns for subplots
nrow=3
ncol=2
# make a list of all dataframes
df_list = [df1 ,df2, df3, df4, df5, df6]
fig, axes = plt.subplots(nrow, ncol)
# plot counter
count=0
for r in range(nrow):
for c in range(ncol):
df_list[count].plot(ax=axes[r,c])
count+=1
Run Code Online (Sandbox Code Playgroud)
使用此代码,您可以在任何配置中绘制子图。您需要定义行nrow
数和列数ncol
。此外,您需要制作df_list
要绘制的数据框列表。
Q-m*_*man 14
您可以使用熟悉的Matplotlib风格调用figure
和subplot
,但你只需要使用指定当前轴plt.gca()
.一个例子:
plt.figure(1)
plt.subplot(2,2,1)
df.A.plot() #no need to specify for first axis
plt.subplot(2,2,2)
df.B.plot(ax=plt.gca())
plt.subplot(2,2,3)
df.C.plot(ax=plt.gca())
Run Code Online (Sandbox Code Playgroud)
等等...
你可以使用这个:
fig = plt.figure()
ax = fig.add_subplot(221)
plt.plot(x,y)
ax = fig.add_subplot(222)
plt.plot(x,z)
...
plt.show()
Run Code Online (Sandbox Code Playgroud)
您可能根本不需要使用 Pandas。这是猫频率的 matplotlib 图:
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)
f, axes = plt.subplots(2, 1)
for c, i in enumerate(axes):
axes[c].plot(x, y)
axes[c].set_title('cats')
plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
128511 次 |
最近记录: |