Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
使用matplotlib在python中创建堆栈条形图时出现的问题_Python_Matplotlib - Fatal编程技术网

使用matplotlib在python中创建堆栈条形图时出现的问题

使用matplotlib在python中创建堆栈条形图时出现的问题,python,matplotlib,Python,Matplotlib,我想尝试创建我使用了以下代码的按位置堆叠的条形图 example of data values are based on different different altitude on particular location location N T S Su 1 25 20 30 40 : : N 代码:= import numpy as np import matplotlib.pyplot as plt N=np.array(

我想尝试创建我使用了以下代码的按位置堆叠的条形图

example of data 
 values are based on different different altitude on particular location  
location   N  T  S  Su
   1       25 20 30 40
   :
   :
   N
代码:=

import numpy as np
import matplotlib.pyplot as plt  


N=np.array([20, 35, 30, 35, 27])
T=np.array([25, 32, 34, 20, 25])
S=np.array([30,5,35,10,20])
Su=np.array([30,5,35,10,20])


No =len(N)

ind = np.arange(No)    # the x locations for the groups
width = 0.35       # the width of the bars: can also be len(x) sequence

p1 = plt.bar(ind, N,   width, color='r')
p2 = plt.bar(ind, T, width, color='y',bottom=N)
p3=plt.bar(ind,S,width,color='g',bottom=N+T)
p4=plt.bar(ind,Su,width,color='w',bottom=N+T+S)

plt.ylabel('Scores')
plt.title('Scores by group and gender')
plt.xticks(ind+width/2., ('G1', 'G2', 'G3', 'G4', 'G5') )
plt.yticks(np.arange(0,200,10))
plt.legend( (p1[0], p2[0],p3[0],p4[0]), 

('Normal','Trapping','Super','Sub') )

plt.show()
它只对T,N,S,Su的单个值起作用 但在某些特定的纬度上,T、N、Su、S的长值将重复,应在堆栈栏中进行调整,但我无法进行调整,请帮助我
分别分组的T、N、S、Su的值具有相同的颜色,基于单个堆叠条上的分组或全部

example location  T    N    S     Su  N   T  S  N
            1     25   30  35     40  45  50 55 60
            :
            :
            N 

在本例中,N,S对于不同高度的单个位置具有多个值,类似的位置有N个,并且具有类似的条件。请帮助我并给出解决方案。

您可以使用
熊猫
模块:

import pandas as pd

df = pd.DataFrame({'Location':['G1', 'G2', 'G3', 'G4', 'G5'],
                   'Normal':np.array([20, 35, 30, 35, 27]),
                   'Trapping':np.array([25, 32, 34, 20, 25]),
                   'Super':np.array([30,5,35,10,20]),
                   'Sub':np.array([30,5,35,10,20])})

df.plot(kind='bar', x='Location', stacked=True)
df2 = pd.concat([df, df[['Normal', 'Sub', 'Super']]], axis=1)

df2 = df2.groupby(level=0, axis=1).sum()
df2.plot(kind='bar', x='Location', stacked=True)
例如,这将产生:

如果我们复制一些列
pd.concat([df,df['Normal',Sub',Super']]],axis=1)
来制作:

    Location    Normal  Sub Super   Trapping    Normal  Sub Super
0   G1  20  30  30  25  20  30  30
1   G2  35  5   5   32  35  5   5
2   G3  30  35  35  34  30  35  35
3   G4  35  10  10  20  35  10  10
4   G5  27  20  20  25  27  20  20
然后可以分组和求和,然后再次绘图:


您能否在代码中提供“错误”输入数据(T、N、S、Su)?您是否希望此非标量值[30,45]的条形长度为max([30,45])或sum([30,45])或…?我编辑了我的问题,请最后检查示例