Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以奇怪的顺序在x轴上以正负值绘制记号-Python_Python_Matplotlib_Plot_Fft - Fatal编程技术网

以奇怪的顺序在x轴上以正负值绘制记号-Python

以奇怪的顺序在x轴上以正负值绘制记号-Python,python,matplotlib,plot,fft,Python,Matplotlib,Plot,Fft,我有一个图,我需要改变x轴中的刻度,这样:x值必须在0到32之间,然后(连续地,不间断地)在-31到-1之间 下面是生成这样一个xaxis的代码,至少作为一个数组: nyquist = int(64/2) +1 xaxis1 = np.arange(1, nyquist) xaxis2 = np.arange(-(int(nyquist)-1), 0) xaxis = np.concatenate((xaxis1, xaxis2)) xaxis的结果是: array([ 1, 2,

我有一个图,我需要改变x轴中的刻度,这样:x值必须在0到32之间,然后(连续地,不间断地)在-31到-1之间

下面是生成这样一个xaxis的代码,至少作为一个数组:

nyquist = int(64/2) +1
xaxis1 = np.arange(1, nyquist)
xaxis2 = np.arange(-(int(nyquist)-1), 0)
xaxis = np.concatenate((xaxis1, xaxis2))
xaxis
的结果是:

array([  1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,
        14,  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,
        27,  28,  29,  30,  31,  32, -31, -30, -29, -28, -27, -26, -25,
       -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12,
       -11, -10,  -9,  -8,  -7,  -6,  -5,  -4,  -3,  -2,  -1])
然后想象要绘制的曲线存储在:

curve = np.zeros(64, float)
for k in range(1, nyquist):
    curve[k] = np.exp(-(k**2))
for k in range(int(n/2+1), n):
    curve[k] = curve[n-k]
好的,现在我需要创建一个绘图,但是使用 “xaxis”(如果我不绘制所有的64个值也可以,但是 例如,只有6个,但必须遵守命令,使 以这种奇怪的顺序显示负值的存在)。 这是我过去常做的,但这并不能产生我想要的:

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.arange(64), curve, 'ro-')
因为很明显,这会在x轴上放置从0到63的64个值,这不是我需要的

我该怎么办

编辑:

我提供了一段可运行的代码

import matplotlib as plt
import numpy as np

n = 64
nyquist = int(n/2) +1
xaxis1 = np.arange(1, nyquist)
xaxis2 = np.arange(-(int(nyquist)-1), 0)
xaxis = np.concatenate((xaxis1, xaxis2))

curve = np.zeros(n, float)
for k in range(1, nyquist):
    curve[k] = np.exp(-(k**2))
for k in range(int(n/2+1), n):
    curve[k] = curve[n-k]

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.arange(64), curve, 'ro-')
plt.savefig('curve.svg')

这只会产生“错误”的绘图,即只有正x值的绘图

您可以将
xticks
用作:

plt.xticks(range(len(xaxis)), xaxis)
在勾号重叠的情况下,也可以旋转xtick值,如下所示:

plt.xticks(range(len(xaxis)), xaxis, rotation='vertical')
您可以通过以下简单方式创建xaxis:

>>> range(1,33)+range(-32,0, 1)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1]

n
代表什么?频率的数量(包括正值和负值),即在我的情况下,我计算“曲线”的k值的数量。你能给我们举个例子,让上面的代码运行吗?太好了!只有一件事:正如你所说,有重叠的蜱虫。如何只画一堆呢?我看不出如何只画一些刻度上的x值!