用子图改变图形大小

Bri*_*ian 207 python matplotlib

我在matplotlib网站上看到了这个例子

http://matplotlib.org/examples/pylab_examples/subplots_demo.html

我想知道是否有可能增加数字大小.

我试过了

f.figsize(15,15)
Run Code Online (Sandbox Code Playgroud)

但它什么都没做.

Rut*_*ies 389

如果您已经使用了图形对象:

f.set_figheight(15)
f.set_figwidth(15)
Run Code Online (Sandbox Code Playgroud)

但是如果您使用.subplots()命令(如您正在显示的示例中)来创建新图形,您还可以使用:

f, axs = plt.subplots(2,2,figsize=(15,15))
Run Code Online (Sandbox Code Playgroud)

  • 还有`fig.set_size_inches`来设置高度和宽度 (12认同)
  • 这不起作用,您可以将高度设置为您想要的任何值,但它永远不会大于您的显示器。 (4认同)
  • 这与您的显示器无关。如果输出到 png 怎么办?你是说它永远不能大于屏幕分辨率?它是以英寸为单位的大小与决定以像素为单位的大小的 dpi 的组合。 (3认同)
  • 在对 subplots() 的调用中包含 Figsize 似乎不起作用。然而,调用 f.set_figheight 确实有效。 (3认同)
  • @BenButterworth,它属于“**fig_kw”部分,该部分被传递给“pyplot.figure”。 (2认同)

aqu*_*tle 20

或者,figure()使用figsize参数创建对象,然后使用add_subplot添加子图.例如

import matplotlib.pyplot as plt
import numpy as np

f = plt.figure(figsize=(10,3))
ax = f.add_subplot(121)
ax2 = f.add_subplot(122)
x = np.linspace(0,4,1000)
ax.plot(x, np.sin(x))
ax2.plot(x, np.cos(x), 'r:')
Run Code Online (Sandbox Code Playgroud)

简单的例子

这种方法的好处是语法更接近于调用subplot()而不是subplots().例如,次要情节似乎没有使用支持GridSpec用于控制次要情节的间距,但都subplot()add_subplot()做的.

  • 有可能分别为ax和ax2添加'size'吗? (6认同)
  • 如果我理解正确,您想设置两个轴的相对大小?在这种情况下,我认为您正在寻找这个问题:/sf/ask/727192371/ (3认同)

Aro*_*roc 19

除了前面的答案之外,这里还有一个选项可以通过以下方式单独设置图形的大小和图形中子图的大小gridspec_kw

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

#generate random data
x,y=range(100), range(10)
z=np.random.random((len(x),len(y)))
Y=Y=[z[i].sum() for i in range(len(x))]
z=pd.DataFrame(z).unstack().reset_index()

#Plot data
fig, axs = plt.subplots(2,1,figsize=(16,9), gridspec_kw={'height_ratios': [1, 2]})
axs[0].plot(Y)
axs[1].scatter(z['level_1'], z['level_0'],c=z[0])
Run Code Online (Sandbox Code Playgroud)

结果是这个数字: 在此处输入图片说明


小智 10

您可以用来plt.figure(figsize = (16,8))更改单个图和最多两个子图的图形大小。(figsize 中的参数可以修改图形大小)

要更改更多子图的图形大小,您可以plt.subplots(2,2,figsize=(10,10))在创建子图时使用。


YSc*_*arf 6

subplots对于在 a 中绘图for loop有时很有用:用于绘制a (二维)matplotlib直方图的多个子图的示例代码。multivariate numpy array

plt.figure(figsize=(16, 8)) 
for i in range(1, 7):
    plt.subplot(2, 3, i)
    plt.title('Histogram of {}'.format(str(i)))
    plt.hist(x[:,i-1], bins=60)
Run Code Online (Sandbox Code Playgroud)