在同一个图中,每个函数旁边都有不同的参数

2024-04-18 13:44:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个矩阵H,可以有3个方向的参数。我想用一组参数来绘制特征值(把它看作函数)&它旁边还有一组参数-仍然在同一个图中-函数有另一组参数。 这在物理学中经常使用,即在绘制能带结构时。 它看起来像:

enter image description here

这不仅仅是将0改为Gamma,将2pi(晶格常数=1)改为X,而是在一个图中相邻地进行多个pliplot。在

编辑:

我没有测量数据-->;这都是计算出来的。我有一个np矩阵(哈密顿-8x8)这取决于7个参数,这里我唯一改变的是方向。 g=伽马,X。。。是位置(我知道它们的方向。) 每个绘图都是这样生成的:

fig4=plt.figure()
LG=fig4.add_subplot(111)
for val in np.linspace(-np.pi/a, 0, 1000):
   LG.scatter([val]*8, H(val, val , val, -15.2, -s*10.25, 19.60, -5.30))
plt.grid()
plt.title(r"$L-\Gamma$")
plt.xlabel(r"$k$ in high symmetry points")
plt.xticks([-C*0.5, 0.], ["L", "$\Gamma$"])
plt.ylabel("energy/eV")
plt.show()

我把物理学也包括进去了,这样医生就更容易理解了。如果这里的人不多:

我有一个函数plot1和plot2&我想在一个y轴相同但x轴不同的图形中水平追加plot2。如图所示(从g-X是一个函数,从X到W是另一个函数,依此类推)。在

编辑2:TobyD&pathoren的回答使我们能够在一个函数中的每个参数旁边画出一个带有几个参数的函数。 我认为我的问题在原则上是可以解决的,但是因为我没有函数,只有一个矩阵,并且想要计算特征值,并且有不止一个方向的参数,这就很复杂了。我设法制作了一个我只想水平切割在一起的图(但不像绘画,而是有一个x轴的描述)。在

编辑3:谢谢你的帮助。最简单的方法就是改变论点x+something,x-something,现在我有了更多的方法,最终可以证明它是有用的。在

final answer


Tags: 函数in编辑参数np绘制plt矩阵
2条回答

下面是一个脚本,其中函数f接受3个参数a, b, c。x值被分成三个不同的区域,x1, x2, x3,对应的函数值f1, f2, f3。在某些断点(由x_ticks定义)有一些线被绘制,并且xtick只针对这些点显示。xlabel由x_ticklabels设置,仅在x_ticks-位置。在

    import numpy as np
import matplotlib.pyplot as plt

def f(x, a, b, c):
    return a*x**2 + b*x + c

x1 = np.linspace(0, 10, 100)
f1 = f(x1, 1, 2, 3)
x2 = np.linspace(10, 20, 100)
f2 = f(x2, 3, -2, 0)
x3 = np.linspace(20, 50, 100)
f3 = f(x3, -1, 2, 1)

fig, ax = plt.subplots(1, 1)

ax.plot(x1, f1, label='f1')
ax.plot(x2, f2, label='f2')
ax.plot(x3, f3, label='f3')
x_ticks = [10, 20, 50]
x_ticklabels = ['K', 'L', 'M']
ax.vlines(x_ticks, ax.get_ylim()[0], ax.get_ylim()[1])
ax.set_xticks(x_ticks)
ax.set_xticklabels(x_ticklabels)
ax.set_yticks([])

plt.show()

enter image description here

让我看看我是否理解你在找什么。在

试试这样的方法:

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

fig = plt.figure()
gs = gridspec.GridSpec(1,n, width_ratios = [width_1,...,width_n])
axes = [plt.subplot(subplot) for subplot in gs]
fig.subplots_adjust(wspace=0)

式中,n是要绘制的不同参数集的数量,width_n是每个参数集的宽度,以您根据规范化选择的任何单位表示。在

子批次调整将子批次之间的间距设置为0。GridSpec为您提供了对每个大小的更细粒度的控制。{spec}我们不需要手动摆弄cdy}标志。在

然后,可以在轴的元素中为每个参数集绘制函数,并指定所需的范围。基本上,将轴的每个元素视为希望合并在一起的图形之一。在

使用与@pathoren相同的示例:

^{pr2}$

请注意,用于更改子批次属性(如xtick)的函数略有不同。使用axes[2].set_xlim可以确保最后一个图很好地被切掉。在

Example Graph

相关问题 更多 >