Matplotlib 如果给定一个值,网格在两条线之间移动,如何在这些线之间创建网格?
我一直在尝试使用一些matplotlib函数,但它没有出现,我尝试使用plt.hline和plt.vline中的一个来放置它们,但对我不起作用。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
这是我的代码,我需要我的网格在蓝线之间移动
# -*- 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非常感谢你,这与我的预期非常接近,但紫色线必须平行于轴,两个蓝色轴中的轴,而不是它们出来时的直线,类似于此,我用一种方法更新了答案,以绘制平行于蓝色线的网格线。