Matplotlib 如果给定一个值,网格在两条线之间移动,如何在这些线之间创建网格?

Matplotlib 如果给定一个值,网格在两条线之间移动,如何在这些线之间创建网格?,matplotlib,Matplotlib,我一直在尝试使用一些matplotlib函数,但它没有出现,我尝试使用plt.hline和plt.vline中的一个来放置它们,但对我不起作用。 这是我的代码,我需要我的网格在蓝线之间移动 # -*- coding: utf-8 -*- """ Created on Tue Dec 29 16:33:11 2020 @author: 146282 """ from mpl_toolkits.mplot3d import Axes3D

我一直在尝试使用一些matplotlib函数,但它没有出现,我尝试使用plt.hline和plt.vline中的一个来放置它们,但对我不起作用。
这是我的代码,我需要我的网格在蓝线之间移动

# -*- coding: utf-8 -*-
"""
Created on Tue Dec 29 16:33:11 2020

@author: 146282
"""
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
import numpy as np
import matplotlib.colors as mcolors
V=float(input("Introduzca la velocidad en terminos de c:"))
if(V>=0 and V<1):



    x=np.arange(0,10,.1)
    y=np.arange(0,10,.1)
    x2=np.arange(-10,10,1)
    y2=np.arange(-10,10,1)



    plt.axvline(x=0,ymin=0, ymax=10, color='k')
    plt.axhline(y=0, xmin=0.,xmax=10, color='k')
    plt.axvline(x=1,ymin=0.5, ymax=0.9, color='darkviolet',label='Malla S')
    plt.axhline(y=1, xmin=0.5,xmax=0.9, color='darkviolet')
    plt.axvline(x=2,ymin=0.5, ymax=0.9, color='darkviolet')
    plt.axhline(y=2, xmin=0.5,xmax=0.9, color='darkviolet')
    plt.axvline(x=3,ymin=0.5, ymax=0.9, color='darkviolet')
    plt.axhline(y=3, xmin=0.5,xmax=0.9, color='darkviolet')
    plt.axvline(x=4,ymin=0.5, ymax=0.9, color='darkviolet')
    plt.axhline(y=4, xmin=0.5,xmax=0.9, color='darkviolet')
    plt.axvline(x=5,ymin=0.5, ymax=0.9, color='darkviolet')
    plt.axhline(y=5, xmin=0.5,xmax=0.9, color='darkviolet')
    plt.axvline(x=6,ymin=0.5, ymax=0.9, color='darkviolet')
    plt.axhline(y=6, xmin=0.5,xmax=0.9, color='darkviolet')
    plt.axvline(x=7,ymin=0.5, ymax=0.9, color='darkviolet')
    plt.axhline(y=7, xmin=0.5,xmax=0.9, color='darkviolet')
    plt.axvline(x=8,ymin=0.5, ymax=0.9, color='darkviolet')
    plt.axhline(y=8, xmin=0.5,xmax=0.9, color='darkviolet')

    x5=np.array([0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10])
    x6=np.array([0,1,2,3,4,5,6,7,8,9,10])
    fx=abs(x)
    plt.plot(x5,x6,color='chocolate',label='Cono de Luz')
    plt.xlim(-10,10)
    plt.plot(x6,x5,color='chocolate')
    plt.plot(-x5,x6,color='chocolate')
    #plt.plot(-x2,-x)
    plt.plot(-x6,x5,color='chocolate')
    plt.ylim(-10,10)

    #HIPER
    xh=np.linspace(-10,10,500)
    yh=np.linspace(-10,10,500)
    v=1-V 
    def axes():
        plt.axhline(0,alpha=.1)
        plt.axvline(0,alpha=.1)
    b=1
    a=1
    xh,yh=np.meshgrid(xh,yh)
    axes()
    plt.contour(xh,yh,((xh**2/a**2)-(yh**2/b**2)),[1],colors='orchid')
    plt.contour(xh,yh,(-(xh**2/a**2)+(yh**2/b**2)),[1],colors='orchid')
    plt.plot(x,y,color='aqua',label='Velocidad de la luz')
    #EJES_PRIMOS
    c=1
    xt=np.array([0,1,2,3,4,5,6,7,8,9,10])
    ct=np.array([0,1,2,3,4,5,6,7,8,9,10])
    xprima=(xt+v*ct)/(np.sqrt(1-v**2/c**2))
    ctprima=(ct-(v/c**2)*xt)/np.sqrt(1-v**2/c**2)
    plt.plot(xprima,'b')
    plt.plot(ctprima,'b')
    # plt.vlines(ctprima, xprima,xprima, colors='k', linestyles='solid')
    #plt.hlines(ctprima,9)
    #plt.vlines(xprima,)
    #plot(ctprima)

    plt.title("MINKOWSKI DIAGRAM")
    plt.legend()
    plt.show()
else:
    print('Error')
#-*-编码:utf-8-*-
"""
创建于2020年12月29日星期二16:33:11
@作者:146282
"""
从mpl_toolkits.mplot3d导入Axes3D
从matplotlib导入cm
从matplotlib.ticker导入LinearLocator
将matplotlib.pyplot作为plt导入
从matplotlib.collections导入LineCollection
将numpy作为np导入
将matplotlib.colors导入为MCOLOR
V=浮动(输入(“c端速度引入”)

如果(V>=0和V您可以通过组合
xprima
ctprima
中的曲线来创建多边形。要创建闭合多边形,需要反转其中一条曲线。
xprima
的x值为
xt
,而
ctprima
的x值为
ct
。因此,多边形的x值为
np(xt,ct[:-1])
和类似的y值。要创建多边形,
多边形
需要xy位置作为
Nx2
数组,可以使用
np.vstack
和转置(
.T
)创建该数组

该多边形可以用于剪裁网格线,也可以仅用于“填充”,而不需要网格线

网格线可以通过for循环创建:
[plt.axvline(x=i,ymin=0.5,ymax=0.9)for范围(1,9)]
。如果结果存储在数组中,则可以使用它调用
。在其上设置剪辑路径(多边形)

导入matplotlib.pyplot作为plt
从matplotlib.patches导入多边形
将numpy作为np导入

#V=float(输入(“introzzca la velocidad en terminos de c(0非常感谢你,这与我的预期非常接近,但紫色线必须平行于轴,两个蓝色轴中的轴,而不是它们出来时的直线,类似于此,我用一种方法更新了答案,以绘制平行于蓝色线的网格线。