Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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
Python 使用matplotlib在条形图中反射点_Python_Matplotlib - Fatal编程技术网

Python 使用matplotlib在条形图中反射点

Python 使用matplotlib在条形图中反射点,python,matplotlib,Python,Matplotlib,编程问题的长期潜伏者,第一次海报 我在写一些代码,其中我正在制作一个由一组值组成的条形图,其中一些值是负的,一些值是正的- 简言之,我想做的是取绿色部分的所有负值,并将它们叠加到正值上,这样你就可以看到这些值的不对称性。我尝试了一些方法来实现这一点,也许我没有找到正确的方法,但似乎找不到一个好的答案 到目前为止,我所拥有的相关代码(希望不会遗漏任何对绘图目的重要的代码…): 然而,当我尝试这种方法时,问题是我得到了“AssertionError:不兼容的大小:参数'height'必须是长度99或

编程问题的长期潜伏者,第一次海报

我在写一些代码,其中我正在制作一个由一组值组成的条形图,其中一些值是负的,一些值是正的-

简言之,我想做的是取绿色部分的所有负值,并将它们叠加到正值上,这样你就可以看到这些值的不对称性。我尝试了一些方法来实现这一点,也许我没有找到正确的方法,但似乎找不到一个好的答案

到目前为止,我所拥有的相关代码(希望不会遗漏任何对绘图目的重要的代码…):

然而,当我尝试这种方法时,问题是我得到了“AssertionError:不兼容的大小:参数'height'必须是长度99或标量”。我不太清楚如何解决这个问题,或者事实上,是否有比我所想的更简单的方法来进行这种反射


任何反馈,谢谢

正如我在评论中提到的,也许这会澄清问题

>>> x = list(range(100))
>>> x[0:30]
[0, 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]
>>> x[30:0]
[]
>>> x[30:0:-1]
[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]

必须指定负步长。

每次调用
plt.bar
,如果第一个参数是长度n的数组(横坐标集),那么第二个参数必须是长度n的数组(纵坐标集)

在您的情况下,您的横坐标集是由长度为99的数组构成的,因此您必须确保您的纵坐标集具有相同的形状

对于第一个调用,您的第二个参数
clipped_levels
似乎具有正确的长度,但是对于第二个调用,第二个参数是
reflect
,它的长度远远超过99个项目

解决这个问题,它应该会工作,希望

编辑:

类似于
reverse=np.连接([clipped_levels[:n_bins/2],clipped_levels[n_bins/2-2::-1]])
应该可以做到这一点


另外,我仍然认为你的
for
循环可以用一条指令来代替(初始化
所有的裁剪值),除非里面有一些其他代码与这里无关。

在哪一行你得到了这个错误?我认为在
裁剪级别[30:0]
中,你必须做一个负步长,像
clipped_levels[30:0:-1]
我不确定这是否与您的问题有关,但我不理解
对于范围内的I…
部分:它在每次迭代中为
所有clipped_值指定相同的值……好的,这很有帮助——这条线并不完全正确,因为它反映了整个情节中的绿色部分,而不仅仅是消极的部分,但玩弄它最终得到了正确的答案。谢谢我还应该注意到,是的,在for循环中还有其他一些事情,我没有把它们放进去,因为它们不相关。
>>> x = list(range(100))
>>> x[0:30]
[0, 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]
>>> x[30:0]
[]
>>> x[30:0:-1]
[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]