与这个问题非常相似,但不同之处在于我的身材可以达到需要的大小.
我需要在matplotlib中生成一堆垂直堆叠的图.结果将使用figsave保存并在网页上查看,因此我不关心最终图像的高度,只要子图间隔开,这样它们就不会重叠.
无论我有多大的数字,子图总是似乎重叠.
我的代码目前看起来像
import matplotlib.pyplot as plt
import my_other_module
titles, x_lists, y_lists = my_other_module.get_data()
fig = plt.figure(figsize=(10,60))
for i, y_list in enumerate(y_lists):
plt.subplot(len(titles), 1, i)
plt.xlabel("Some X label")
plt.ylabel("Some Y label")
plt.title(titles[i])
plt.plot(x_lists[i],y_list)
fig.savefig('out.png', dpi=100)
Run Code Online (Sandbox Code Playgroud) 如果我在matplotlib图中添加一个副标题,它会被子图标题覆盖.有人知道如何轻松处理吗?我尝试了这个tight_layout()功能,但它只会让事情变得更糟.
例:
import numpy as np
import matplotlib.pyplot as plt
f = np.random.random(100)
g = np.random.random(100)
fig = plt.figure()
fig.suptitle('Long Suptitle', fontsize=24)
plt.subplot(121)
plt.plot(f)
plt.title('Very Long Title 1', fontsize=20)
plt.subplot(122)
plt.plot(g)
plt.title('Very Long Title 2', fontsize=20)
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud) 我使用以下函数创建了以下一组子图:
def create31fig(size,xlabel,ylabel,title=None):
fig = plt.figure(figsize=(size,size))
ax1 = fig.add_subplot(311)
ax2 = fig.add_subplot(312)
ax3 = fig.add_subplot(313)
plt.subplots_adjust(hspace=0.001)
plt.subplots_adjust(wspace=0.001)
ax1.set_xticklabels([])
ax2.set_xticklabels([])
xticklabels = ax1.get_xticklabels()+ ax2.get_xticklabels()
plt.setp(xticklabels, visible=False)
ax1.set_title(title)
ax2.set_ylabel(ylabel)
ax3.set_xlabel(xlabel)
return ax1,ax2,ax3
Run Code Online (Sandbox Code Playgroud)
如何确保子图(312)的顶部和底部不与其邻居重叠?谢谢.

我有一个 Tkinter GUI,它显示一个 Matplotlib 图(Python 2.7.3 with Matplotlib 1.2.0rc2)并让用户配置图的某些方面。绘图往往会变大,因此图形被包裹在滚动画布中。配置图的一方面是改变其大小。
现在,一方面绘图正确滚动,另一方面调整大小也能正常工作,但这两种操作不能结合使用。下面是一个脚本来演示效果。(对不起,长度,我不能再短了。)您可以滚动绘图(使用滚动条),并且可以将其变得越来越小(使用按钮)。但是,无论何时滚动,图形都会重置为其原始大小。显然,我希望图形的大小不会因使用滚动条而改变。
import math
from Tkinter import Tk, Button, Frame, Canvas, Scrollbar
import Tkconstants
from matplotlib import pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
def addScrollingFigure(figure, frame):
# set up a canvas with scrollbars
canvas = Canvas(frame)
canvas.grid(row=0, column=0, sticky=Tkconstants.NSEW)
xScrollbar = Scrollbar(frame, orient=Tkconstants.HORIZONTAL)
yScrollbar = Scrollbar(frame)
xScrollbar.grid(row=1, column=0, sticky=Tkconstants.EW)
yScrollbar.grid(row=0, column=1, sticky=Tkconstants.NS)
canvas.config(xscrollcommand=xScrollbar.set)
xScrollbar.config(command=canvas.xview)
canvas.config(yscrollcommand=yScrollbar.set)
yScrollbar.config(command=canvas.yview)
# plug in the figure
figAgg = FigureCanvasTkAgg(figure, canvas)
mplCanvas = …Run Code Online (Sandbox Code Playgroud) 我有这个用熊猫制作的情节:
我想在情节的标题和以下情节的轴之间有更多的空间,这样它们就不会重叠。我已经尝试了问题的解决方案,使用 matplotlib 中的许多子图改善子图大小/间距,但没有一个对我的图没有任何影响。