我在matlab中遇到了问题.我输出一个图像,如示例所示,并通过print命令保存.我想要做的是保存图像,使得没有死空间,即我想删除保存的图像中的空白区域.
示例: 
黑色边框显示图像占据的总面积.这真是一个空间的浪费.我想删除它.我想要做的是:
我手动删除了图像周围的白色区域.但我想通过print命令自动执行此操作.可以吗?如果可能,标题仍然可以吗?即使它被删除然后也没关系,但如果标题可以保持更好.
我正在编写一个 python 脚本,该脚本将 (1) 获取每个子图的 y 值列表,以针对一组常见的 x 值进行绘图,(2) 使每个子图成为散点图并放置它在子图网格中的适当位置,并且(3)针对不同大小的子图网格完成这些任务。我的第三个语句的意思是:我使用的测试用例的结果是 64 个图,8 行和 8 列。我希望代码能够处理各种网格尺寸的任何大小的数组(大约在 50 到 80 个图之间),而不必每次运行代码时都返回并说“好的,这是行数和我需要的专栏。”
现在,我正在使用 exec 命令来获取 y 值,并且工作正常。我能够制作每个子图并让它填充网格,但前提是我手动输入所有内容(64 次做同样的事情只是愚蠢的,所以我知道必须有一种方法来自动化这个)。
任何人都可以提出一种可以实现这一目标的方法吗?我无法提供数据或我的代码,因为这是研究材料,不是我要发布的。如果这个问题非常基本或者我应该能够从现有文档中确定,请原谅。我对编程很陌生,可以使用一些指导!
我想从多个来源读取数据并将它们绘制在彼此之上。我需要绘制它们的方式是x-axis在底部有一个标签,而其他的都应该与相同的 对齐x-axis,无论有哪些点可用。
以下是问题的示例:
import matplotlib.pylab as plt
import random
import matplotlib.gridspec as gridspec
random.seed(20)
#create x-axis of my data
x1 = range(0,10) #different range than the next one
x2 = range(1,9)
#create data (just random data corresponding the x1,x2)
data1 = [random.random() for i in x1]
data2 = [random.random()*1000 for i in x2]
gs = gridspec.GridSpec(2,1)
fig = plt.figure()
#first plot
ax = fig.add_subplot(gs[0])
ax.plot(x1,data1)
ax.set_ylabel(r'Label One', size =16)
ax.get_yaxis().set_label_coords(-0.1,0.5)
plt.tick_params(
axis='x', # changes apply to …Run Code Online (Sandbox Code Playgroud) 我想给我的子情节提供一个组合标题,而不是单独标题每个情节.例如;
for pl=1:4
subplot(2,2,pl)
title('Test')
end
Run Code Online (Sandbox Code Playgroud)
如果我用这个:
figure
title('Test')
for pl=1:4
subplot(2,2,pl)
end
Run Code Online (Sandbox Code Playgroud)
我没有得到任何头衔.
我想在中心子情节的地方放置一个图例(并将其删除)。我写了这段代码:
import matplotlib.pylab as plt
import numpy as np
f, ax = plt.subplots(3,3)
x = np.linspace(0, 2. * np.pi, 1000)
y = np.sin(x)
for axis in ax.ravel():
axis.plot(x, y)
legend = axis.legend(loc='center')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我不知道如何隐藏一个中心情节。为什么传说没有出现?

此链接没有帮助http://matplotlib.org/1.3.0/examples/pylab_examples/legend_demo.html
我正在尝试共享imshow必须为方形和经典图的 a 的 x 轴:
我花了两天时间,现在我疯了。有人知道如何对齐它们吗?
用于生成图像的代码如下。
def myplot( Nbin=20 ):
X = np.random.rand(1000)
Y = np.random.rand(1000)
h2, yh2, xh2 = np.histogram2d( Y, X, bins=[Nbin,Nbin] )
h1, xh1 = np.histogram( X, bins=Nbin )
######################################
######################################
fig = plt.figure( )
gs = gridspec.GridSpec( 3, 2 )
######################################
######################################
ax1 = plt.subplot( gs[:-1,:] )
im = plt.imshow( h2, interpolation='nearest', origin='lower',
extent=[xh2[0],xh2[-1],yh2[0],yh2[-1]] )
cb = plt.colorbar( im, ax=ax1 )
plt.xlim( xh1[0], xh1[-1] )
plt.ylim( xh1[0], …Run Code Online (Sandbox Code Playgroud) 使用 matplotlib,我想在每行具有不同列数的网格上显示多个子图,其中每个子图的大小大致相同,并且子图的排列方式使它们或多或少居中,如下所示:
创建一个具有 2, 3, 2 模式的网格是一件相当简单的事情gridspec,但问题在于gridspec,不出所料,将它们与网格对齐,因此带有 2 个图的行中的图更宽:
这是生成它的代码:
from matplotlib import gridspec
from matplotlib import pyplot as plt
fig = plt.figure()
arrangement = (2, 3, 2)
nrows = len(arrangement)
gs = gridspec.GridSpec(nrows, 1)
ax_specs = []
for r, ncols in enumerate(arrangement):
gs_row = gridspec.GridSpecFromSubplotSpec(1, ncols, subplot_spec=gs[r])
for col in range(ncols):
ax = plt.Subplot(fig, gs_row[col])
fig.add_subplot(ax)
for i, ax in enumerate(fig.axes):
ax.text(0.5, 0.5, "Axis: {}".format(i), fontweight='bold',
va="center", ha="center")
ax.tick_params(axis='both', bottom='off', top='off', left='off',
right='off', labelbottom='off', labelleft='off') …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 3 列子图下方添加图例。
我尝试了以下方法:
fig, ax = plt.subplots(ncols=3)
ax[0].plot(data1)
ax[1].plot(data2)
ax[2].plot(data3)
ax_sub = plt.subplot(111)
box = ax_sub.get_position()
ax_sub.set_position([box.x0, box.y0 + box.height * 0.1,box.width, box.height * 0.9])
ax_sub.legend(['A', 'B', 'C'],loc='upper center', bbox_to_anchor=(0.5, -0.3),fancybox=False, shadow=False, ncol=3)
plt.show()
Run Code Online (Sandbox Code Playgroud)
然而,这只会创建一个空帧。当我注释掉 ax_sub 部分时,我的子图显示得很好(但没有图例......)...
非常感谢!
我正在使用 python 并找到了几个解决方案来做到这一点。但它需要创建每个单独的子图。但是因为有一个参数你可以做subplot=True,我想知道有没有办法在一行代码中做到这一点......你怎么说sharey=True,你能让它“共享”一个水平常量吗?
我一直在玩它。起初,它只显示在最后一张图表上,但现在根本没有显示。
import matplotlib.pyplot as plt
line_up_points.plot(subplots=True, layout=(3, 3),sharey=True, figsize=(18, 12))
plt.legend(loc='best')
plt.axhline(y=125.08, color='r')
Run Code Online (Sandbox Code Playgroud)
这是它显示的内容:
但我想在 y=125.08 处的每个子图上都有一条水平线
没有单独创建 7 个不同图形的任何想法?
我在 Matplotlib 中生成了一个由 50 个子图组成的图。在这些子图中的每一个中,我都有一个包含大约 3000 个数据点的散点图。我这样做是因为我只想概览我正在处理的文档中的不同散点图。
到目前为止,这也有效并且看起来不错,但问题显然是我得到的 SVG 文件非常大(大约 15 MB)。Word 无法处理这么大的 SVG 文件。
所以我的问题是:有没有办法优化这个 SVG 文件?散点图中的许多数据点彼此重叠,因此我想应该可以在不更改可见输出的情况下删除其中许多“不可见”的数据点。(所以在 illustrator 中这样的事情似乎是我想要做的:Link)是否也可以在 Inkscape 中做这样的事情?甚至直接在 Matplotlib 中?
我知道我只能生成一个 PNG 文件,但我更喜欢在我的文档中将绘图作为矢量图形。
subplot ×10
matplotlib ×7
python ×7
plot ×3
legend ×2
matlab ×2
automation ×1
figure ×1
imshow ×1
inkscape ×1
scatter-plot ×1
svg ×1