Python,tkinter,在同一子图中绘制3个叠加的groupby直方图

2024-09-27 23:21:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的新手,我做了一个tkinter界面,在这个界面上可以提问,然后在另一个窗口中绘制图形。你知道吗

我正在使用panda库处理大型csv文件。你知道吗

我遇到的问题是,在图形窗口中,我试图在同一子图上绘制3个堆叠的直方图。你知道吗

更具体地说,我有3个值,警报值(VA,VI和VR),年份值和位置值(命名为PK(类型:float))。你知道吗

我需要绘制3个堆叠直方图(按年份)相邻的每个位置和每个警报值在画布中的子图。你知道吗

我尝试使用matplotlib来绘制按位置排序的三个警报值,但我不知道如何在图表上显示年份。所以我尝试了另一种方法,但没有完全奏效。你知道吗

我试着做了一些df.groupby.plot图,如果我只绘制一个堆叠的直方图,但如果我想显示其中三个直方图,它就不起作用了。我成功地绘制了三个不同的叠加直方图,但它只显示了三个值所在的位置,它们不是相邻的,而是相互重叠的。那不是我想要的。你知道吗

有时我没有VI或VR,这就是为什么我把try/except放在这里,这样它就不会停止我的脚本。你知道吗

你能帮我弄清楚吗?你知道吗

下面是我要绘制的df的一个示例:

g3m['pk']=[1,1,1,2,2,2,4,4,5,5,5,5,5,5,6,6,10,10,10,12,12,12,12,12,12,12,12]
g3m['annee']=[2010,2011,2012,2010,2012,2013,2011,2014,2010,2011,2012,2012,2012,2016,2016,2017,2010,2010,2014,2010,2010,2010,2010,2012,2013,2014,2014]
g3m['class_seuil']=['VA','VA','VA','VA','VA','VA','VA','VA','VA','VA','VA','VI','VR','VI','VI','VA','VI','VI','VR','VA','VA','VI','VI','VA','VI','VR','VA']
g3m['type_mesure']=['MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC']

它是熊猫数据帧。
下面是我在子图中绘制的代码:

这是我身材的宣言:

f = Figure(figsize=(15,8), dpi=100)
f.subplots_adjust(top=0.97,hspace=0.41,left=0.05,bottom=0.08,right=0.91)
a = f.add_subplot(311)
c = f.add_subplot(312)
b = f.add_subplot(313)

下面是我的代码:

try:
    g3mVa=pa.DataFrame()
    g3mVa['pk']=g3m[g3m['class_seuil']=='VA']['pk_decimal_km_m']
    g3mVa['annee']=g3m[g3m['class_seuil']=='VA']['annee']
    g3mVa['type_mesure']=g3m[g3m['class_seuil']=='VA']['type_mesure']

    g3mVa.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,colormap='Greens',y='type_mesure',grid=True,ax=c,rot='horizontal')
    c.hold(True)
except:
    pass
try:

    g3mVi=pa.DataFrame()
    g3mVi['pk']=g3m[g3m['class_seuil']=='VI']['pk_decimal_km']
    g3mVi['annee']=g3m[g3m['class_seuil']=='VI']['annee']    
    g3mVi['type_mesure']=g3m[g3m['class_seuil']=='VI']['type_mesure']
    g3mVi.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,colormap='Oranges',y='type_mesure',grid=True,ax=c,rot='horizontal')
    c.hold(True)    
except:
    pass
try:
    g3mVr=pa.DataFrame()
    g3mVr['pk']=g3m[g3m['class_seuil']=='VR']['pk_decimal_km_p']
    g3mVr['annee']=g3m[g3m['class_seuil']=='VR']['annee']    
    g3mVr['type_mesure']=g3m[g3m['class_seuil']=='VR']['type_mesure']
    g3mVr.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,y='type_mesure',colormap='Reds',grid=True,ax=c,rot='horizontal')
    c.hold(True)  
except:
    pass

你能帮我吗?你知道吗

有没有可能像我想的那样画出来?你知道吗


Tags: truemactype绘制直方图classvrvi
1条回答
网友
1楼 · 发布于 2024-09-27 23:21:06

对不起,我把代码弄错了,g3m['pk_decimal_km_m']g3m['pk_decimal_km']g3m['pk_decimal_km_p']g3m['pk']报告。你知道吗

这个错误是由于我所做的所有尝试。你知道吗

这是我的代码更正。你知道吗

try:
    g3mVa=pa.DataFrame()
    g3mVa['pk']=g3m[g3m['class_seuil']=='VA']['pk']
    g3mVa['annee']=g3m[g3m['class_seuil']=='VA']['annee']
    g3mVa['type_mesure']=g3m[g3m['class_seuil']=='VA']['type_mesure']

    g3mVa.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,colormap='Greens',y='type_mesure',grid=True,ax=c,rot='horizontal')
    c.hold(True)
except:
    pass
try:

    g3mVi=pa.DataFrame()
    g3mVi['pk']=g3m[g3m['class_seuil']=='VI']['pk']
    g3mVi['annee']=g3m[g3m['class_seuil']=='VI']['annee']    
    g3mVi['type_mesure']=g3m[g3m['class_seuil']=='VI']['type_mesure']
    g3mVi.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,colormap='Oranges',y='type_mesure',grid=True,ax=c,rot='horizontal')
    c.hold(True)    
except:
    pass
try:
    g3mVr=pa.DataFrame()
    g3mVr['pk']=g3m[g3m['class_seuil']=='VR']['pk']
    g3mVr['annee']=g3m[g3m['class_seuil']=='VR']['annee']    
    g3mVr['type_mesure']=g3m[g3m['class_seuil']=='VR']['type_mesure']
    g3mVr.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,y='type_mesure',colormap='Reds',grid=True,ax=c,rot='horizontal')
    c.hold(True)  
except:
    pass

相关问题 更多 >

    热门问题