长期潜伏的编程问题,第一次海报。你知道吗
我正在写一些代码,在这里我正在做一个由一堆值组成的条形图,其中一些是负数,一些是正数-plot here
简言之,我想做的是把绿色部分的所有负值叠加到正的一面,这样你就可以看到这些值的不对称性。我已经尝试了一些方法来让这个工作,也许我没有寻找正确的东西,但似乎找不到一个很好的答案如何做到这一点。你知道吗
到目前为止,我已经有了相关的代码(希望不会遗漏任何对剧情来说很重要的东西……):
import glob
import pyrap.images as pim
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
import matplotlib.mlab as mlab
from scipy.optimize import *
less_than_expected_min = -500
more_than_expected_max = 1200
n_bins = 100
bin_edges = np.linspace(less_than_expected_min, more_than_expected_max, n_bins)
for i in range(total):
all_clipped_values = np.zeros([total,n_bins-1])
clipped_levels= np.sum(all_clipped_values,axis=0)
reflect= np.concatenate([clipped_levels[0:30], clipped_levels[30:0]])
plt.bar(bin_edges[:-1],clipped_levels,width=(more_than_expected_max -less_than_expected_min)/float(n_bins), log=True,color='green')
plt.bar(bin_edges[:-1],reflect,width=(more_than_expected_max -less_than_expected_min)/float(n_bins), log=True,color='red')
然而,当我尝试这种方法时,问题是我得到了“AssertionError:incompatible size:argument'height'must be length 99 or scalar”。我不太清楚如何解决这个问题,或者事实上是否有比我所想的更简单的方法来进行这种反射。你知道吗
感谢任何反馈-谢谢!你知道吗
每次调用
plt.bar
,如果第一个参数是长度n的数组(横坐标集),那么第二个参数必须是长度n的数组(纵坐标集)。你知道吗在您的例子中,您的横坐标集是由长度为99的数组构成的,因此您必须确保您的纵坐标集具有相同的形状。你知道吗
对于第一个调用,第二个参数
clipped_levels
的长度似乎合适,但是对于第二个调用,第二个参数是reflect
,它远没有99个项目长。你知道吗解决这个问题,它应该工作,希望!你知道吗
编辑:
像
reverse = np.concatenate([clipped_levels[:n_bins/2], clipped_levels[n_bins/2-2::-1]])
这样的东西应该会起作用。你知道吗另外,我仍然认为可以用一条指令(初始化
all_clipped_values
)替换for
循环,除非其中有其他与此无关的代码。你知道吗正如我在评论中提到的,也许这会澄清问题
必须指定负阶跃。你知道吗
相关问题 更多 >
编程相关推荐