我想在2乘3设置(即2行和3列)中绘制5个数据帧。这是我的代码:然而在第6个位置(第二行和第三列)有一个额外的空图,我想摆脱它。我想知道如何删除它,以便我在第一行有三个绘图,在第二行有两个绘图。
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=3)
fig.set_figheight(8)
fig.set_figwidth(15)
df[2].plot(kind='bar',ax=axes[0,0]); axes[0,0].set_title('2')
df[4].plot(kind='bar',ax=axes[0,1]); axes[0,1].set_title('4')
df[6].plot(kind='bar',ax=axes[0,2]); axes[0,2].set_title('6')
df[8].plot(kind='bar',ax=axes[1,0]); axes[1,0].set_title('8')
df[10].plot(kind='bar',ax=axes[1,1]); axes[1,1].set_title('10')
plt.setp(axes, xticks=np.arange(len(observations)), xticklabels=map(str,observations),
yticks=[0,1])
fig.tight_layout()
答案 0 :(得分:11)
试试这个:
#include <iostream>
char * GetValueAtIndex(char * const c, int index);
void ReadString(char * c, int length);
int main()
{
const int size = 10;
char ma[size];
char * pointer = ma;
ReadString(ma, 20);
std::cout << GetValueAtIndex(pointer, 3) << std::endl;
system("pause");
}
void ReadString(char * c, int length)
{
std::cin.getline(c, length);
}
char * GetValueAtIndex(char * const c, int index)
{
return c + index;
}
创建子图的一种更灵活的方法是fig.delaxes(axes[1][2])
方法。参数是rect坐标列表:fig.add_axes([x,y,xsize,ysize])。这些值是相对于画布大小的,所以xsize为0.5意味着子图的宽度是窗口宽度的一半。
答案 1 :(得分:1)
或者,使用axes
方法set_axis_off()
:
axes[1,2].set_axis_off()
答案 2 :(得分:0)
如果您知道要删除的图,则可以给出索引并按以下方式删除:
axes.flat[-1].set_visible(False) # to remove last plot
答案 3 :(得分:0)
关闭所有轴,并仅在您在它们上绘图时将它们一个一个地打开。那么你就不需要提前知道索引了,例如:
import matplotlib.pyplot as plt
columns = ["a", "b", "c", "d"]
fig, axes = plt.subplots(nrows=len(columns))
for ax in axes:
ax.set_axis_off()
for c, ax in zip(columns, axes):
if c == "d":
print("I didn't actually need 'd'")
continue
ax.set_axis_on()
ax.set_title(c)
plt.tight_layout()
plt.show()