精华内容
下载资源
问答
  • matplotlib 堆积柱状图-正负叠加问题

    千次阅读 2019-11-08 16:19:46
    没看到很好的解决方案,希望有好的方案的在下方提供链接。...import matplotlib.pyplot as plt # Juwairia's data: a = [4,-6,9] b = [2,7,1] c = [3,3,1] d = [4,0,-3] data = np.array([a, b, c, d]) d...

    提供一个方案供参考

    import numpy as np
    import matplotlib.pyplot as plt
    
    # Juwairia's data:     
    a = [4,-6,9]
    b = [2,7,1]
    c = [3,3,1]
    d = [4,0,-3]
    data = np.array([a, b, c, d])
    
    data_shape = np.shape(data)
    
    # Take negative and positive data apart and cumulate
    def get_cumulated_array(data, **kwargs):
        cum = data.clip(**kwargs)
        cum = np.cumsum(cum, axis=0)
        d = np.zeros(np.shape(data))
        d[1:] = cum[:-1]
        return d  
    
    cumulated_data = get_cumulated_array(data, min=0)
    cumulated_data_neg = get_cumulated_array(data, max=0)
    
    # Re-merge negative and positive data.
    row_mask = (data<0)
    cumulated_data[row_mask] = cumulated_data_neg[row_mask]
    data_stack = cumulated_data
    
    cols = ["g", "y", "b", "c"]
    
    fig = plt.figure()
    ax = plt.subplot(111)
    
    for i in np.arange(0, data_shape[0]):
        ax.bar(np.arange(data_shape[1]), data[i], bottom=data_stack[i], color=cols[i],)
    
    plt.show()

     

     

     

     

    展开全文
  • 引言在查找资料时看到了堆积柱状图,简单明了,而且绘制起来也不是很难,再结合自己的教程推文中也确实没有此类图表,即决定通过构建虚拟数据进行matplotlib堆积柱状图的绘制推文,详细内容如下:PS:如有需要Python...

    引言

    在查找资料时看到了堆积柱状图,简单明了,而且绘制起来也不是很难,再结合自己的教程推文中也确实没有此类图表,即决定通过构建虚拟数据进行matplotlib堆积柱状图的绘制推文,详细内容如下:

    PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

    d9388033c712237a74e11fed720b538b.gif

    可以免费领取源码项目实战视频PDF文件

    a46dc14c24d999456b233b9c847a12f9.png

    数据构建及默认可视化设置

    结合此类图表特点,我们构建的数据结果如下:

    6a24a137247372794742029f701de220.png

    在matplotlib中要想绘制堆积柱状图,则需要灵活设置 ax.bar()绘图函数中bottom参数,先看一下简单的例子:

    import matplotlib.pyplot as plt
    
    labels = ['G1', 'G2', 'G3', 'G4', 'G5']
    men_means = [20, 35, 30, 35, 27]
    women_means = [25, 32, 34, 20, 25]
    width = 0.35       # the width of the bars: can also be len(x) sequence
    fig, ax = plt.subplots(figsize=(5,3),dpi=200)
    ax.bar(labels, men_means, width,label='Men')
    ax.bar(labels, women_means, width, bottom=men_means,label='Women')
    ax.set_ylabel('Scores')
    ax.set_title('Scores by group and gender')
    ax.legend()
    ax.text(.87,-.08,'nVisualization by DataCharm',transform = ax.transAxes,
            ha='center', va='center',fontsize = 5,color='black',fontweight='bold',family='Roboto Mono')
    plt.savefig(r'F:DataCharmSCI paper plotssci_bar_guanwang',width=5,height=3,
                dpi=900,bbox_inches='tight')
    plt.show()

    这里women 柱状图时,bottom设置为 men_means ,结果如下:

    b4130a63a0f214d59cb01fe8a729cb16.png

    看到这里,对柱状图的堆积应该有了一个较好的理解了吧

    回到我们虚构的数据,使用默认的matplotlib参数,代码如下:

    plt.rcParams['font.family'] = "Times New Roman"
    fig,ax = plt.subplots(figsize=(8,5),dpi=200)
    
    label = [i for i in bar_data.columns[1:]]
    mu_number = bar_data.iloc[0,1:].values
    ma_number = bar_data.iloc[1,1:].values
    en_number = bar_data.iloc[2,1:].values
    ch_number = bar_data.iloc[3,1:].values
    
    width = .4
    
    ax.bar(label, mu_number, width, label='Music',color='white',hatch="//",ec='k',lw=.6)
    ax.bar(label, ma_number, width,  bottom=mu_number, label='Math',color='gray',ec='k',lw=.6)
    ax.bar(label, en_number, width,  bottom=ma_number, label='English',color='white',hatch="...",ec='k',lw=.6)
    ax.bar(label, ch_number, width,  bottom=en_number, label='Chinese',color='white',hatch="",ec='k',lw=.6)
    ax.set_ylim(0,120)
    ax.tick_params(direction='out',labelsize=12,length=5.5,width=1,top=False,right=False)
    ax.legend(fontsize=11,frameon=False,loc='upper center',ncol=4)
    ax.set_ylabel('Numbers of Studies',fontsize=13)
    ax.set_xlabel('Time(year)',fontsize=13)
    text_font = {'size':'17','weight':'bold','color':'black'}
    ax.text(.03,.93,"(a)",transform = ax.transAxes,fontdict=text_font,zorder=4)
    ax.text(.87,-.08,'nVisualization by DataCharm',transform = ax.transAxes,
            ha='center', va='center',fontsize = 5,color='black',fontweight='bold',family='Roboto Mono')
    plt.savefig(r'F:DataCharmSCI paper plotssci_bar_04.png',width=5,height=3,
                dpi=900,bbox_inches='tight')

    结果如下:

    c06efb98cf012bb3ced8de35429aabd4.png

    虽然效果也还不错,但想要达到出版的要求,可能还需要进行定制化需求设置。

    可视化定制化设计

    要想 达到一般出版社的要求,对其颜色、填充、刻度、轴脊、字体等都需要自行设置,具体代码如下:

    plt.rcParams['font.family'] = "Times New Roman"
    fig,ax = plt.subplots(figsize=(8,5),dpi=200)
    
    label = [i for i in bar_data.columns[1:]]
    mu_number = bar_data.iloc[0,1:].values
    ma_number = bar_data.iloc[1,1:].values
    en_number = bar_data.iloc[2,1:].values
    ch_number = bar_data.iloc[3,1:].values
    
    width = .4
    
    ax.bar(label, mu_number, width, label='Music',color='white',hatch="//",ec='k',lw=.6)
    ax.bar(label, ma_number, width,  bottom=mu_number, label='Math',color='gray',ec='k',lw=.6)
    ax.bar(label, en_number, width,  bottom=ma_number, label='English',color='white',hatch="...",ec='k',lw=.6)
    ax.bar(label, ch_number, width,  bottom=en_number, label='Chinese',color='white',hatch="",ec='k',lw=.6)
    ax.set_ylim(0,120)
    ax.tick_params(direction='out',labelsize=12,length=5.5,width=1,top=False,right=False)
    ax.legend(fontsize=11,frameon=False,loc='upper center',ncol=4)
    ax.set_ylabel('Numbers of Studies',fontsize=13)
    ax.set_xlabel('Time(year)',fontsize=13)
    text_font = {'size':'17','weight':'bold','color':'black'}
    ax.text(.03,.93,"(a)",transform = ax.transAxes,fontdict=text_font,zorder=4)
    ax.text(.87,-.08,'nVisualization by DataCharm',transform = ax.transAxes,
            ha='center', va='center',fontsize = 5,color='black',fontweight='bold',family='Roboto Mono')
    plt.savefig(r'F:DataCharmSCI paper plotssci_bar_04.png',width=5,height=3,
                dpi=900,bbox_inches='tight')

    结果如下:

    34d42aca6b83ac67d669c6c149925382.png

    有的时候对轴脊的设置也有很严的要求,通过添加如下代码,即可对轴脊进行设置:

    for spine in ['bottom','left']:
        ax.spines[spine].set_linewidth(1.5)
        
    ax.spines['right'].set_visible(False)
    ax.spines['top'].set_visible(False)

    结果如下:

    0e4ef149d7ac9b76580ea75b5d5a1db8.png

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    以上文章来源于DataCharm,作者宁海涛

    展开全文
  • matplotlib柱状图,折线图,饼图 首先导入maplotlib画图函数 impory matplotlib.pyplot as plt 接下来进入主题:

    matplotlib画柱状图,折线图,饼图,散点图,误差图,堆积柱状图

    首先导入maplotlib画图函数

    import matplotlib.pyplot as plt
    

    先在python导入我们的excel数据:
    在这里插入图片描述
    接下来进入主题:

    1.柱状图

    以上表为例子,我们以姓名为横坐标,工资为纵坐标画出柱状图:
    代码如下:

    import pandas as pd                      #导入pandas库
    import matplotlib.pyplot as plt          #导入画图的库
    
    excel_file = './try.xlsx'               #导入excel数据
    data = pd.read_excel(excel_file)        #读入数据
    
    """柱状图"""
    plt.rcParams['font.sans-serif'] = ['SimHei']   #可以显示中文
    plt.figure(figsize=(10, 6))                    #画图,大小可自己设置
    plt.ylabel('工资(元)')                         #横纵坐标的名称设置
    plt.xlabel('姓名')
    x = data['姓名']                                #横纵坐标的数据导入
    y = data['工资']
    plt.bar(x, y)                                  #东西放进bar里(当成一个盒子理解)
    plt.title('柱状图演示')                          #标题
    plt.show()
    

    结果:
    在这里插入图片描述

    2.散点图

    """散点图"""
    plt.rcParams['font.sans-serif'] = ['SimHei']     #可以显示中文
    fig = plt.subplots(figsize=(10, 6))
    x = np.array(data['姓名'])
    y = np.array(data['工资'])
    plt.scatter(x, y)                                #scatter()函数画散点图
    plt.show()
    

    效果入下:
    在这里插入图片描述

    3.折线图

    知道条形统计图之后折线其实大同小异:
    代码如下:

    """折线图"""
    import pandas as pd                      #导入pandas库
    import matplotlib.pyplot as plt          #导入画图的库
    
    excel_file = './try.xlsx'               #导入excel数据
    data = pd.read_excel(excel_file)        #读入数据
    plt.rcParams['font.sans-serif'] = ['SimHei']   #可以显示中文
    plt.figure(figsize=(10, 6))                    #画图,大小可自己设置
    plt.plot(data['姓名'], data['工资'], color='blue', label='线的名称', marker='s') #marker折线形状
    plt.legend()                                   #显示图例,这里指显示‘label='线的名称'
    plt.ylabel('工资(元)')
    plt.show()                                     #显示
    

    效果图简单就不展示了

    4.饼图

    4.1普通饼图(显示比例)

    展示各个部门的经济比例图:
    方法很多,我的方法是先把各部门的总工资先计算出来,再画图
    画图的关键就是函数plt.pie()

    """饼图"""
    import pandas as pd                      #导入pandas库
    import matplotlib.pyplot as plt          #导入画图的库
    
    excel_file = './try.xlsx'               #导入excel数据
    data = pd.read_excel(excel_file)        #读入数据
    
    plt.rcParams['font.sans-serif'] = ['SimHei']   #可以显示中文
    plt.figure(figsize=(8, 6))                    #画图,大小可自己设置
    bumenshuju = {'部门': ['A', 'B', 'C'],
                  '部门工资': [sum(data.loc[data['部门'] == 'A', '工资']),
                             sum(data.loc[data['部门'] == 'B', '工资']),
                            sum(data.loc[data['部门'] == 'C', '工资'])]}
    dataframe_1 = pd.DataFrame(bumenshuju)
    # print(dataframe_1)
    labels = dataframe_1['部门工资']
    x = dataframe_1['部门']
    plt.pie(labels, labels=x, autopct='%1.1f%%')
    plt.legend('A''B''C')
    plt.title('部门的工资分布')
    plt.axis('equal')
    plt.show()
    

    效果图:
    在这里插入图片描述

    4.2可显示具体数值的饼图

    这个难度稍微大一点
    代码展示:

    
    """高级饼图"""
    import pandas as pd                      #导入pandas库
    import numpy as np
    import matplotlib.pyplot as plt
    
    excel_file = './try.xlsx'               #导入excel数据
    data = pd.read_excel(excel_file)        #读入数据
    plt.rcParams['font.sans-serif'] = ['SimHei']                                     #可以显示中文
    fig, ax = plt.subplots(figsize=(8, 6), subplot_kw=dict(aspect="equal"))          #画布的基本设置
    
    bumenshuju = {'A部门': sum(data.loc[data['部门'] == 'A', '工资']),             #构建各部门的工资字典,然后转成dataframe表格类型
                  'B部门': sum(data.loc[data['部门'] == 'B', '工资']),
                  'C部门': sum(data.loc[data['部门'] == 'C', '工资'])}
    
    data_1 = [bumenshuju[i] for i in bumenshuju.keys()]                         #即工资总数
    index = [i for i in bumenshuju.keys()]                                     #部门
    
    def func(pct, allvals):                                                       #返回饼图里显示的一串字符
        absolute = int(pct/100.*np.sum(allvals))
        return "{:.1f}%\n({:d} 元)".format(pct, absolute)
    
    
    wedges, texts, autotexts = ax.pie(data_1, autopct=lambda pct: func(pct, data_1),
                                      textprops=dict(color="w"))                                 #设置饼图的东西
    
    ax.legend(wedges, index,                                              #图例的设置,可以自己设置
              title="部门",
              loc="center left",
              bbox_to_anchor=(1, 0, 0.5, 1))
    
    
    
    ax.set_title("各个部门工资比例和具体工资总数")                 #标题
    
    plt.show()
    

    效果图如下:
    在这里插入图片描述

    5.散点图

    直接上代码,用的表格是一样的

    """散点图"""
    plt.rcParams['font.sans-serif'] = ['SimHei']     #可以显示中文
    fig = plt.subplots(figsize=(10, 6))
    x = np.array(data['姓名'])
    y = np.array(data['工资'])
    plt.scatter(x, y)                                #scatter()函数画散点图
    plt.show()
    
    

    效果图:
    在这里插入图片描述

    6.误差图

    代码如下:

    """绘制误差棒图"""
    plt.rcParams['font.sans-serif'] = ['SimHei']                       #可以显示中文
    error = []
    for i in range(len(data['工资'])):                                  #把误差搞出来,range才能迭代,这里可以看出误差是和均值工资的差距
        a = data['工资'][i] - np.sum(data['工资'])/len(data['工资'])
        error.append(a)
    y = data['工资']
    x = data['姓名']
    y.plot(yerr=error)
    plt.show()
    

    效果图如下:
    在这里插入图片描述

    7.堆积柱状图

    其实很简单,注意以什么为底画就好,理解性画图
    人狠话不多,直接上图
    以下是源数据在这里插入图片描述

    博主最近在服装公司实习,要观察各月,各品类较为直观的的变化。
    上代码:

    import pandas as pd                      #导入pandas库
    import matplotlib.pyplot as plt          #导入画图的库
    excel_file ='./堆积柱状图.xlsx'
    data = pd.read_excel(excel_file, index_col='衣服类型')
    
    """堆积柱状图"""
    plt.rcParams['font.sans-serif'] = ['SimHei']                       #可以显示中文
    d1 = data['T恤']
    d2 = data['连衣裙']
    d3 = data['套装']
    d4 = data['内衣']
    d5 = data['内裤']
    d6 = data['丝巾']
    
    fig, axs = plt.subplots(1, 1, figsize=(14, 7))   #画一个图就好了
    
    axs.bar(data.index, d1, width=0.4, label='T恤')     #index作横坐标,先画d1
    axs.bar(data.index, d2, width=0.4, bottom=d1, label='连衣裙')  #以d1为低画d2
    axs.bar(data.index, d3, width=0.4, bottom=d2+d1, label='套装') #以d1+d2为底,画d3
    axs.bar(data.index, d4, width=0.4, bottom=d3+d2+d1, label='内衣')   #同理
    axs.bar(data.index, d5, width=0.4, bottom=d4+d3+d2+d1, label='内裤')
    axs.bar(data.index, d6, width=0.4, bottom=d5+d4+d3+d2+d1, label='丝巾')
    axs.set_ylim(0, 12000)        #y轴最高点
    axs.set_xticklabels(data.index, rotation=90)
    axs.legend(loc='upper left',  shadow=True)
    
    plt.show() #画出来
    

    最后就是上图!
    在这里插入图片描述
    帅气逼格高的堆积柱状图来也,下一次更新讲解如何加数值。

    接下来还有matplotlib画的各种图形,会积极更新的,建议收藏

    展开全文
  • matplotlib堆积柱状图及百分比柱状图

    万次阅读 多人点赞 2019-10-01 08:24:17
    matplotlib堆积柱状图及百分比柱状图 在博主日常的绘图过程,有一种图也是什么常见的绘图工作,就是堆积的柱状图,其实很简单,就注意几个参数即可。 Here we go! 首先是引入数据库: import matplotlib.pyplot as...

    matplotlib之堆积柱状图及百分比柱状图

    在博主日常的绘图过程,有一种图也是什么常见的绘图工作,就是堆积的柱状图,其实很简单,就注意几个参数即可。 Here we go!

    首先是引入数据库:

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    

    然后我创建了一个csv文件,这里随机填写了一些数据,详细如下:
    在这里插入图片描述
    接下来用pandas读取数据,用pandas读取csv十分简单,几行代码搞定:

    name = csv.Person
    salary1 = np.array(csv.Salary1)
    salary2 = np.array(csv.Salary2)
    salary3 = np.array(csv.Salary3)
    

    这里把pandas对象转成np的array是为了方便之后的array加减操作。
    这里展示两种效果,因此用一下subplots函数创建了对比图

    fig, axs = plt.subplots(1 , 2, figsize=(10,4))
    axs[0].bar(index, salary1, width=0.4, label= 'salary1')
    axs[0].bar(index, salary2, width=0.4, bottom=salary1, label= 'salary2')
    axs[0].bar(index, salary3, width=0.4, bottom=salary2+salary1, label= 'salary3')
    axs[0].set_ylim(0, 30000)
    axs[0].set_xticklabels(name, rotation=90)
    axs[0].legend(loc='upper left',  shadow=True)
    
    summ = salary1+salary2+salary3
    percentage1 = salary1/summ
    percentage2 = salary2/summ
    percentage3 = salary3/summ
    
    axs[1].bar(index, percentage1, width=0.4, label= salary1)
    axs[1].bar(index, percentage2, width=0.4, bottom=percentage1, label= salary2)
    axs[1].bar(index, percentage3, width=0.4, bottom=percentage1+percentage2, label= salary3)
    axs[1].set_ylim(0,1)
    axs[1].set_xticklabels(name, rotation=90)
    
    plt.savefig('9.tiff', dpi=300)
    plt.show()
    

    在这里插入图片描述

    • 这里左边显示了正常的堆积图,右边则显示了百分比堆积图,堆积的要点在于绘制时候的bottom关键字,这决定了柱状图的绘制起点,因此第二段的bottom是第一段的数值,而第三段则为第一、二段想加,
    • 另外值得注意点 是,这里的subplots函数,返回对象有两个,前者fig相当于画布,而后者axs相当于在画布上绘制的元素,因此,我们这里是对绘制的元素操作,所以后续都是在ax上展开。

    接下来还有一个需求,我们需要在柱状图上显示柱子对应的数值,比如右侧的图,需要加上红绿蓝颜色对应的百分比,那这里我们针对axs[1]继续绘制。

    这里先自定义一个函数:

    def add_text(x, y, data):
        for x0, y0, data0 in zip(x, y, data):
            axs[1].text(x0, y0, round(data0, 1), rotation=90)
    

    然后给出文本的坐标值以及数值即可:
    注意这里绿色那段,由于柱子实在太短,如果要添加一下文本,需要手动微调位置,我这里就没继续添加了,
    绘制图像如下
    在这里插入图片描述
    完整代码如下:

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    
    
    def add_text(x, y, data, fontsize=12):
        for x0, y0, data0 in zip(x, y, data):
            axs[1].text(x0, y0, round(data0, 1), rotation=90)
    
    csv = pd.read_csv('salary.csv')
    name = csv.Person
    salary1 = np.array(csv.Salary1)
    salary2 = np.array(csv.Salary2)
    salary3 = np.array(csv.Salary3)
    index = np.arange(len(name))
    width = 0.4
    
    fig, axs = plt.subplots(1, 2, figsize=(10, 5))
    axs[0].bar(index, salary1, width=width, label='salary1')
    axs[0].bar(index, salary2, width=width, bottom=salary1, label='salary2')
    axs[0].bar(index, salary3, width=width, bottom=salary2 + salary1, label='salary3')
    axs[0].set_ylim(0, 30000)
    axs[0].set_xticks(index)
    axs[0].set_xticklabels(name, rotation=90)
    axs[0].legend(loc='upper left', shadow=True)
    
    sum = salary1 + salary2 + salary3
    percentage1 = salary1 / sum
    percentage2 = salary2 / sum
    percentage3 = salary3 / sum
    
    axs[1].bar(index, percentage1, width=width, label=salary1)
    axs[1].bar(index, percentage2, width=width, bottom=percentage1, label=salary2)
    axs[1].bar(index, percentage3, width=width,
               bottom=percentage1 + percentage2, label=salary3)
    axs[1].set_ylim(0, 1)
    axs[1].set_xticks(index)
    axs[1].set_xticklabels(name, rotation=90)
    
    y1 = percentage1/2
    y2 = percentage1 + percentage2/2
    y3 = sum - percentage3/2
    
    add_text(index-width/2, y1, percentage1)
    add_text(index-width/2, y2, percentage2)
    # add_text(index-width/2, y3, percentage3)
    
    plt.savefig('9.tiff', dpi=300)
    plt.show()
    

    更进一步的,写个自定义的函数,用来传输对象进去,直接调用函数试试:
    以下为全代码:

    import numpy as np
    import matplotlib.pyplot as plt
    
    
    category_names = ['Strongly disagree', 'Disagree',
                      'Neither agree nor disagree', 'Agree', 'Strongly agree']
    results = {
        'Question 1': [10, 15, 17, 32, 26],
        'Question 2': [26, 22, 29, 10, 13],
        'Question 3': [35, 37, 7, 2, 19],
        'Question 4': [32, 11, 9, 15, 33],
        'Question 5': [21, 29, 5, 5, 40],
        'Question 6': [8, 19, 5, 30, 38]
    }
    
    
    def survey(results, category_names):
        labels = list(results.keys())
        # 获取标签
        data = np.array(list(results.values()))
        # 获取具体数值
        data_cum = data.cumsum(axis=1)
        # 逐项加和
        category_colors = plt.get_cmap('RdYlGn')(np.linspace(0.15, 0.85, data.shape[1]))
    
        """
        在cmmap中取出五组颜色
        category_colors:
            [[0.89888504 0.30549789 0.20676663 1.        ]
             [0.99315648 0.73233372 0.42237601 1.        ]
             [0.99707805 0.9987697  0.74502115 1.        ]
             [0.70196078 0.87297193 0.44867359 1.        ]
             [0.24805844 0.66720492 0.3502499  1.        ]]
        
        """
    
        print(category_colors)
        # 常见颜色序列, 在cmap中取色
    
        fig, ax = plt.subplots(figsize=(5, 9))
        # 绘图
        # ax.invert_xaxis()
        # 使其更符合视觉习惯,index本身从下到上
        ax.yaxis.set_visible(False)
        ax.set_xticklabels(labels=labels, rotation=90)
        # 不需要可见
        ax.set_ylim(0, np.sum(data, axis=1).max())
    
        for i, (colname, color) in enumerate(zip(category_names, category_colors)):
            heights = data[:, i]
            # 取第一列数值
            starts = data_cum[:, i] - heights
            # 取每段的起始点
            ax.bar(labels, heights, bottom=starts, width=0.5,
                    label=colname, color=color)
            xcenters = starts + heights / 2
            r, g, b, _ = color
            text_color = 'white' if r * g * b < 0.5 else 'darkgrey'
            for y, (x, c) in enumerate(zip(xcenters, heights)):
                ax.text(y, x, str(int(c)), ha='center', va='center',
                        color=text_color, rotation = 90)
        ax.legend()
        return fig, ax
    
    
    survey(results, category_names)
    plt.show()
    
    

    在这里插入图片描述
    完工!

    展开全文
  • 在查找资料时看到了堆积柱状图,简单明了,而且绘制起来也不是很难,再结合自己的教程推文中也确实没有此类图表,即决定通过构建虚拟数据进行matplotlib堆积柱状图的绘制推文,详细内容如下: PS:如有需要Python...
  • matplotlib画图教程系列之-堆积柱状图

    千次阅读 2020-02-19 13:53:50
    matplotlib堆积柱状图画法介绍 堆积柱状图可以理解是两个柱状图显示在一个图形中,关键属性就在与bottom这个属性。
  • 两层堆积import numpy as npimport matplotlib.pyplot as plty1 = np.array([1,2,3,4])y2 = np.array([1,1,1,1])x = np.array([2009,2010,2011,2012])plt.figure(figsize=(4,4))plt.bar(x, y1, label='a')plt.bar(x,...
  • matplotlib创建堆积柱状图比较简单,通过pyplot.bar()函数中bottom函数可以便捷实现。 两组数据 两组数据的堆积柱状图非常简单,直接使用bottom参数即可。 import matplotlib.pyplot as plt labels = ['G1', 'G2',...
  • import matplotlib.pyplot as plt import numpy as np bar_data = pd.read_csv('data.csv', header=None) plt.rcParams['font.family'] = "Times New Roman" fig, ax = plt.subplots(figsize=(5, 3), dpi=200) # ...
  • 使用matplotlib创建百分比堆积柱状图的思路与堆积柱状图类似,只不过bottom参数累计的不是数值而是百分比,因此,需要事先计算每组柱子的数值总和,进而求百分比。 未使用numpy版本 适用于少量数据,数据结构需要...
  • Matplotlib——柱状图条形图包括单数据系列柱状图、多数据系列柱状图、堆积柱状图、百分比柱状图一、matplotlib1、简介Matplotlib 是什么?Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互...
  • 如下所示,先根据figsize定义的图片大小调用plt.figure画图,然后通过返回的fig对象,调用fig.add_subplot函数进行对应子图的绘画,前两个参数是每行以及每列的子图个数,下面代码所示为2*2的由4个子构成的图片。...
  • 使用matplotlib创建百分比堆积柱状图的思路与堆积柱状图类似,只不过bottom参数累计的不是数值而是百分比,因此,需要事先计算每组柱子的数值总和,进而求百分比。未使用numpy版本适用于少量数据,数据结构需要手动...

空空如也

空空如也

1 2 3 4 5
收藏数 89
精华内容 35
关键字:

matplotlib堆积柱状图