如果我在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) 我对这段代码的工作原理有点困惑:
fig, axes = plt.subplots(nrows=2, ncols=2)
plt.show()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,无花果轴如何工作?它有什么作用?
为什么这不能做同样的事情:
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
Run Code Online (Sandbox Code Playgroud)
谢谢
比方说,matplotlib xlabels中有3行子图,其中一行可以与下一行的标题重叠.一个人必须摆弄pl.subplots_adjust(hspace),这很烦人.
是否有一个配方hspace可以防止重叠并适用于任何nrow?
""" matplotlib xlabels overlap titles ? """
import sys
import numpy as np
import pylab as pl
nrow = 3
hspace = .4 # of plot height, titles and xlabels both fall within this ??
exec "\n".join( sys.argv[1:] ) # nrow= ...
y = np.arange(10)
pl.subplots_adjust( hspace=hspace )
for jrow in range( 1, nrow+1 ):
pl.subplot( nrow, 1, jrow )
pl.plot( y**jrow )
pl.title( 5 * ("title %d " % jrow) ) …Run Code Online (Sandbox Code Playgroud) 我找到了pyplot的tight_layout函数,并希望使用它.在我的应用程序中,我将matplotlib图嵌入到Qt GUI中并使用数字而不是pyplot.有什么办法可以在那里申请tight_layout吗?如果我在一个图中有多个轴,它也会工作吗?
我试图绘制两个显示击球和保龄球计数的计票图.我尝试了以下代码:
l=['batting_team','bowling_team']
for i in l:
sns.countplot(high_scores[i])
mlt.show()
Run Code Online (Sandbox Code Playgroud)
但通过使用这个,我得到两个一个在另一个下面的情节.我如何让他们并排订购?
下图显示了 2 X 2 网格布局中的标准 Seaborn/Matplotlib 箱线图:
这几乎是我想要的,只是我想在图的第一行和第二行之间留出更多空间。第一行图的 X 轴标签与第二行图的标题之间的距离几乎不存在。我一直在玩这个线程中解释的参数:
这是我的相关代码:
import math
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
from PyPDF2 import PdfFileMerger
import seaborn as sns
num_cols = 2
num_rows = int(math.ceil(tot_plots / float(num_cols)))
fig, axes = plt.subplots(nrows=num_rows, ncols=num_cols, figsize=(16, 16))
x_var = df_orig['hra']
for idx, ax in enumerate(axes.flat):
data_var = current_cols[idx]
y_var = df_orig[data_var]
title_str = ''
sns.boxplot(x=x_var, y=y_var, ax=ax,
order=order, palette=color, showfliers=False)
ax.set_title(data_var + title_str) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gridspec在matplotlib中制作一个图像网格.问题是,我似乎无法摆脱行之间的填充.

这是我对解决方案的尝试.
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import ImageGrid
import numpy as np
from os import listdir
from os import chdir
from PIL import Image
import matplotlib.gridspec as gridspec
chdir('/home/matthew/Dropbox/Work/writing/'+
'paper_preperation/jump_figs')
files = listdir('/home/matthew/Dropbox/Work/writing/'+
'paper_preperation/jump_figs')
images = [Image.open(f) for f in files]
"""
fig = plt.figure()
grid = ImageGrid(fig, 111, # similar to subplot(111)
nrows_ncols = (2, 5), # creates 2x2 grid of axes
axes_pad=0.1, # pad between axes in inch.
)
"""
num_rows = 2
num_cols = 5 …Run Code Online (Sandbox Code Playgroud) 我在python中创建了一个包含多个子图的图形。我还为图中的某些轴添加了各种轴标签。举些例子:
plt.xlabel('Phase ($^\circ$)',fontsize=10)
Run Code Online (Sandbox Code Playgroud)
不过,我注意到,在生成最终图形时,允许其他子图重叠并遮盖轴标签的文字。
有什么方法可以阻止这种情况发生吗?
如果我有 5 个图表,如果我制作了 3x2 子图,如何将最后一个(第 5 个)图表居中?
这是我当前的代码:
plt.figure(1)
plt.subplot(321)
firstperiod.megaball.plot(kind='hist', bins = 25)
plt.subplot(322)
secondperiod.megaball.plot(kind='hist', bins = 36)
plt.subplot(323)
thirdperiod.megaball.plot(kind='hist', bins = 52)
plt.subplot(324)
fourthperiod.megaball.plot(kind='hist', bins = 46)
plt.subplot(325)
fifthperiod.megaball.plot(kind='hist', bins = 15)
Run Code Online (Sandbox Code Playgroud)
还想在图表之间放置更多的空白,这样轴值就不会变得狭窄和重叠..还有一个选项吗?
我正在尝试使用熊猫绘制一些直方图。这是一些示例代码,其执行的操作与我正在执行的操作类似:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('2018-10-14', periods=1000))
df = pd.DataFrame(np.random.randn(1000, 6), index=ts.index, columns=['A', 'B', 'C', 'D', 'E', 'F'])
df = df.cumsum()
df.hist()
Run Code Online (Sandbox Code Playgroud)
数据以良好的直方图显示,但有一个小问题:
我在顶部的直方图标签与下一行底部的X轴标签重叠。
我希望能够在这些之间添加一些间距,但是我还没有找到有关如何执行此操作的任何信息。
如何使用pandas和matplotlib增加地块之间的填充?
我有这段代码,我可以在其中控制属性,例如:x 轴范围、标题、xlabel、ylabel、图例、网格、x 标签上的文本旋转:
#!/usr/bin/python
import datetime
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
from matplotlib.dates import DateFormatter
############################################
# generate data
x = np.arange(0,10)
y0 = np.arange(0,10)
y1 = np.random.rand(10)
y2 = np.random.rand(10)
############################################
# initialize (sub)plot(s)
fig, ax = plt.subplots()
############################################
# width of x axis
x_min_index = 0
x_max_index = 3
x_min = x[x_min_index]
x_max = x[x_max_index]
############################################
# create (sub)plot
l, = plt.plot(x,y0, label="plot1a")
l, = plt.plot(x,y1, label="plot1b")
l, = …Run Code Online (Sandbox Code Playgroud) 我有这个用熊猫制作的情节:
我想在情节的标题和以下情节的轴之间有更多的空间,这样它们就不会重叠。我已经尝试了问题的解决方案,使用 matplotlib 中的许多子图改善子图大小/间距,但没有一个对我的图没有任何影响。