Python 不使用“gridspec”:&引用;在参数中?

Python 不使用“gridspec”:&引用;在参数中?,python,python-3.x,matplotlib,codec,Python,Python 3.x,Matplotlib,Codec,我的问题很简单:我不能在 图(strecke,strecke 2,“仪表中的strecke/s”,“s(t)图”,0,:) 因为它告诉我:“你可以在你的函数中加入一个if条件。您可以将pos2的默认值设置为None。因此,如果您想要:,则在调用图表时不会传递任何值。然后检查函数内部是否为pos2传递了任何值。如果没有,则使用:,否则使用传递的值 下面是修改后的函数。我没有你的数据,但可以用 def图(y,y2,yachse,titel,pos1,pos2=None): 如果不是pos2: ax

我的问题很简单:我不能在 图(strecke,strecke 2,“仪表中的strecke/s”,“s(t)图”,0,:)
因为它告诉我:“你可以在你的函数中加入一个
if
条件。您可以将
pos2
的默认值设置为
None
。因此,如果您想要
,则在调用
图表时不会传递任何值。然后检查函数内部是否为
pos2
传递了任何值。如果没有,则使用
,否则使用传递的值

下面是修改后的函数。我没有你的数据,但可以用


def图(y,y2,yachse,titel,pos1,pos2=None):
如果不是pos2:
ax=图添加子批次(gs[pos1,:])
其他:
ax=图添加_子批次(gs[pos1,pos2])
ax.绘图(zeit,y,“go”,markersize=2.5)
轴图(zeit,y2,“ro”,markersize=2.5)
ax.自动缩放(enable=False,axis=“both”,tight=None)
ax.grid(真)
ax.集合标题(滴度)
plt.gcf().canvas.set\u window\u title(“图表”)

图(strecke,strecke 2,“strecke in Metern/s”,“s(t)图”,0)#您可以在函数中设置
if
条件。您可以将
pos2
的默认值设置为
None
。因此,如果您想要
,则在调用
图表时不会传递任何值。然后检查函数内部是否为
pos2
传递了任何值。如果没有,则使用
,否则使用传递的值

下面是修改后的函数。我没有你的数据,但可以用


def图(y,y2,yachse,titel,pos1,pos2=None):
如果不是pos2:
ax=图添加子批次(gs[pos1,:])
其他:
ax=图添加_子批次(gs[pos1,pos2])
ax.绘图(zeit,y,“go”,markersize=2.5)
轴图(zeit,y2,“ro”,markersize=2.5)
ax.自动缩放(enable=False,axis=“both”,tight=None)
ax.grid(真)
ax.集合标题(滴度)
plt.gcf().canvas.set\u window\u title(“图表”)

图(strecke,strecke 2,“strecke in Metern/s”,“s(t)diagram”,0)#Numpy提供了通过生成索引表达式的方法。你可以把它当作

np.s_[:]
将完整的切片传递给函数

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

gs = gridspec.GridSpec(2, 2)
fig = plt.figure('Diagramme', tight_layout=True)

data = np.loadtxt("data/BewegungBeschleunigung.csv", skiprows=1, delimiter=",", unpack=True)
(zeit, strecke, geschwindigkeit, beschleunigung, 
 strecke2, geschwindigkeit2, beschleunigung2) = data


def diagram(y, y2, yachse, titel, pos1, pos2):

    ax = fig.add_subplot(gs[pos1, pos2])
    ax.plot(zeit, y, "go", markersize = 2.5)
    ax.plot(zeit, y2, "ro", markersize = 2.5)
    ax.autoscale(enable = False, axis = "both", tight = None)
    ax.grid(True)
    ax.set_title(titel)

    plt.gcf().canvas.set_window_title("Diagramme")


diagram(strecke, strecke2, "Strecke", "S(t) Diagramm", 0, np.s_[:])
diagram(geschwindigkeit, geschwindigkeit2, "Geschwindigkeit", "V(t) Diagramm", 1, 0)
diagram(beschleunigung, beschleunigung2, "Beschleunigung", "a(t) Diagramm", 1, 1 )
plt.show()

Numpy提供了一种通过生成索引表达式的方法。你可以把它当作

np.s_[:]
将完整的切片传递给函数

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

gs = gridspec.GridSpec(2, 2)
fig = plt.figure('Diagramme', tight_layout=True)

data = np.loadtxt("data/BewegungBeschleunigung.csv", skiprows=1, delimiter=",", unpack=True)
(zeit, strecke, geschwindigkeit, beschleunigung, 
 strecke2, geschwindigkeit2, beschleunigung2) = data


def diagram(y, y2, yachse, titel, pos1, pos2):

    ax = fig.add_subplot(gs[pos1, pos2])
    ax.plot(zeit, y, "go", markersize = 2.5)
    ax.plot(zeit, y2, "ro", markersize = 2.5)
    ax.autoscale(enable = False, axis = "both", tight = None)
    ax.grid(True)
    ax.set_title(titel)

    plt.gcf().canvas.set_window_title("Diagramme")


diagram(strecke, strecke2, "Strecke", "S(t) Diagramm", 0, np.s_[:])
diagram(geschwindigkeit, geschwindigkeit2, "Geschwindigkeit", "V(t) Diagramm", 1, 0)
diagram(beschleunigung, beschleunigung2, "Beschleunigung", "a(t) Diagramm", 1, 1 )
plt.show()

好的,谢谢你,但这是另一个问题。正如你在这个屏幕截图中看到的:如果我这样做,V(t)图(第二个)太大了,并且超过了a(t)图(第三个)@BoroFel:什么问题?sry按enter键快速,用problem@BoroFel:您能否尝试在
plt.show()之前添加
plt.tight\u layout()
?它不会改变什么^^^好的,谢谢,但它带来了另一个问题。正如你在这个屏幕截图中看到的:如果我这样做,V(t)图(第二个)太大了,并且超过了a(t)图(第三个)@BoroFel:什么问题?sry按enter键快速,用problem@BoroFel:您能否尝试在
plt.show()之前添加
plt.tight\u layout()
?它不会改变任何内容^^我只能在这里重复:使用
numpy.loadtxt
加载数据。此外,今后请不要使用指向数据主机的链接。这里使用的实际数据与问题完全无关。请参阅。我只能在这里重复:使用
numpy.loadtxt
加载数据。此外,今后请不要使用指向数据主机的链接。这里使用的实际数据与问题完全无关。看见