使用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])或…?我编辑了我的问题,请最后检查示例