Python绘制条形统计图

调用第三方包的语法示例

Import Pandas as pd

Import Numpy as np

Import matplotlib.plot as plt

主要解决显示乱码问题,读取EXCEL表内容中文字可能会乱码,解决办法,在第一行声明编码方式,# -*- coding: gbk -*-

import matplotlib as mpl

mpl.rcParams['font.sans-serif'] = ['KaiTi', 'SimHei', 'FangSong']  # 汉字字体,优先使用楷体,如果找不到楷体,则使用黑体

mpl.rcParams['font.size'] = 12  # 字体大小

mpl.rcParams['axes.unicode_minus'] = False  # 正常显示负号

label = pd.read_excel(r'绝对路径+文件名.xlsx', sheet_name='产业链数据聚合分析', usecols=[0])

路径用单引号,前加个r表示绝对路径,sheet_name参数表示需要读取那个sheet的内容,因为一个表可包含多个sheet,usecols=[],语法表示 读取某一列的值,注意从0开始索引,usecols=[0,8]表示读取第一列和第9列的值,如果索引超过实际列数会报错,

array1 = np.array(label.stack()) 该语法表示把从Excel读取的内容传到一个数组

list1 = array1.tolist() 该语法表示把数组传到一个列表

以上两句语法有什么用呢?是在画柱状统计图的时候获取一个维度的数据,肯定有更优的代码写法,笔者是初学Python数据分析,故此用这个方法。

matplotlib.plot这个函数是专门绘制图形的

plt.figure(figsize=(16, 12))  规定输出图像的尺寸,单位是英寸

plt.barh(list1, list2) plt.bar是输出柱状图,plt.barh是输出横向柱状图,有两个参数是x,y,一般只用这两个

plt.title('This is title of figure')  这个函数是输出图的标题

plt.xlabel('this is x label')这个函数是输出x轴标题

plt.ylabel('this is y label')这个函数是输出y轴标题

for x,y in zip(x,y): 控制标签位置,用了个for循环去调用标签的值

plt.text(x,y,'%.0F%y,ha = 'center',va = 'bottom',fontsize=18),然后把值显示在柱状图上

plt.show() 这个函数是显示图像

这是读取的EXCEL表的内容,代码读取了第一列和第八列,索引值分别是0和7

代码实例

参考代码

# -*- coding: gbk -*-

import pandas as pd

import matplotlib.pyplot as plt

import matplotlib as mpl

import numpy as np

mpl.rcParams['font.sans-serif'] = ['KaiTi', 'SimHei', 'FangSong']  # 汉字字体,优先使用楷体,如果找不到楷体,则使用黑体

mpl.rcParams['font.size'] = 12  # 字体大小

mpl.rcParams['axes.unicode_minus'] = False  # 正常显示负号

label = pd.read_excel(r'C:\Users\Administrator\Desktop\产业链数据统计\企业信息\蚂蚁查产业链统计.xlsx', sheet_name='产业链数据聚合分析', usecols=[0])

array1 = np.array(label.stack())

list1 = array1.tolist()

company_county_value = pd.read_excel(r'C:\Users\Administrator\Desktop\产业链数据统计\企业信息\蚂蚁查产业链统计.xlsx',

                                    sheet_name='产业链数据聚合分析', usecols=[7])

array2 = np.array(company_county_value.stack())

list2 = array2.tolist()

plt.figure(figsize=(16, 12))

plt.bar(list1, list2,width=0.5)

plt.title('产业链企业数量')

for list1, list2 in zip(list1, list2):

    plt.text(list1, list2, "%.0F"% list2, ha='center', va='bottom', fontsize=12)

plt.show()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容