精华内容
下载资源
问答
  • 本篇文章主要介绍了使用Python绘制图表大全总结,小编觉得挺不错的,现在分享给大家,也给大家个参考。一起跟随小编过来看看吧
  • 主要介绍了使用Python导出Excel图表以及导出为图片的方法,Python相关模块在Windows下操作office非常方便,需要的朋友可以参考下
  • python图形图表源代码

    2017-07-19 10:29:09
    python图形图表源代码
  • 使用python图表

    万次阅读 2018-01-15 14:14:29
    本节我们来一起学习使用python图表。 matplotlib是目前比较流行的数学绘图库,首先我们来安装它,环境变量配置好的情况下直接使用pip就好,如下图 它会给你安装与你python版本兼容的库,等待安装成功后,我们...

    快两个月没写东西了,昨天晚上回家的飞机,在家没啥事了,写点东西省的手生。本节我们来一起学习使用python画图表。
    matplotlib是目前比较流行的数学绘图库,首先我们来安装它,环境变量配置好的情况下直接使用pip就好,如下图
    这里写图片描述
    它会给你安装与你python版本兼容的库,等待安装成功后,我们开始绘制一个简单的图表。

    #导入pyplot模块,并用plt作为它的名字
    import matplotlib.pyplot as plt
    #创建一个列表
    list1 = [1, 2, 3, 4, 5, 6, 7, 8]
    plt.plot(list1)
    plt.show()

    得到的图形如下
    这里写图片描述
    我们还可以添加一些参数来任意调节标签的大小、颜色………

    import matplotlib.pyplot as plt
    list1 = [1, 2, 3, 4, 5, 6, 7, 8]
    #linewidth来调节线条的粗细,c来调节颜色
    plt.plot(list1, linewidth=6,c='red')
    #设置,x,y坐标标签和它的大小
    plt.xlabel('X', fontsize=16)
    plt.ylabel('Y', fontsize=16)
    #设置刻度数字的大小
    plt.tick_params(axis='both', labelsize=10)
    plt.show()

    如图这里写图片描述
    接下里我们同时给图形提供输入值和输出值

    import matplotlib.pyplot as plt
    list1 = [1, 2, 3, 4, 5, 6, 7, 8]
    list2 = [1, 4, 9, 16, 25, 36, 49, 64]
    plt.plot(list1, list2,linewidth=3,c='blue')
    
    plt.xlabel('X', fontsize=16)
    plt.ylabel('Y', fontsize=16)
    #设置刻度数字的大小
    plt.tick_params(axis='both', labelsize=10)
    plt.show()

    如图
    这里写图片描述
    下节我们来使用python画散点图

    展开全文
  • 400):num_score_390_400 = num_score_390_400 + 1elif score in range(400, 410):num_score_400_410 = num_score_400_410 + 1# 构建两个元组以后期建表方便bar_x_axis_data = ("300-310", "310-320", "320-330", ...

    num_score_300_310 = 0num_score_310_320 = 0num_score_320_330 = 0num_score_330_340 = 0num_score_340_350 = 0num_score_350_360 = 0num_score_360_370 = 0num_score_370_380 = 0num_score_380_390 = 0num_score_390_400 = 0num_score_400_410 = 0min_score = 999max_score = 0# 将各个分段的数量统计for i in tables:score = i["preliminary_score"]if score > max_score:max_score = scoreif score < min_score:min_score = scoreif score in range(300, 310):num_score_300_310 = num_score_300_310 + 1elif score in range(310, 320):num_score_310_320 = num_score_310_320 + 1elif score in range(320, 330):num_score_320_330 = num_score_320_330 + 1elif score in range(330, 340):num_score_330_340 = num_score_330_340 + 1elif score in range(340, 350):num_score_340_350 = num_score_340_350 + 1elif score in range(350, 360):num_score_350_360 = num_score_350_360 + 1elif score in range(360, 370):num_score_360_370 = num_score_360_370 + 1elif score in range(370, 380):num_score_370_380 = num_score_370_380 + 1elif score in range(380, 390):num_score_380_390 = num_score_380_390 + 1elif score in range(390, 400):num_score_390_400 = num_score_390_400 + 1elif score in range(400, 410):num_score_400_410 = num_score_400_410 + 1# 构建两个元组用以后期建表方便bar_x_axis_data = ("300-310", "310-320", "320-330", "330-340", "340-350", "350-360", "360-370", "370-380", "380-390", "390-400", "400-410")bar_y_axis_data = (num_score_300_310, num_score_310_320, num_score_320_330, um_score_330_340, num_score_340_350, num_score_350_360, um_score_360_370, num_score_370_380, num_score_380_390, um_score_390_400, num_score_400_410)

    展开全文
  • 主要介绍了python xlwings 库 生成图表的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 这次呢,我想讲讲地图可视化的内容,以前我也写过用Python的内置库绘制地图,但总感觉不够美观。如何才能在短时间内制作漂亮的可视化地图呢,我觉得Python+可视化工具是不错的选择。 以下动态可视化地图就是J哥亲手...
  • 主要介绍了Python读取Excel数据并生成图表过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 今天小编就为大家分享一篇在python plt图表中文字大小调节的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 这里使用python爬取招聘信息存到数据库。这个脚本只负责收集,收集之后保存到数据库 为了加快爬取速度这里采用多进程方式。 脚本详情参考https://blog.csdn.net/qq_38204481/article/details/93890794 这里进行了...

    0x01数据收集
    这里使用python爬取招聘信息存到数据库。这个脚本只负责收集,收集之后保存到数据库

    在这里插入图片描述
    为了加快爬取速度这里采用多进程方式。

    脚本详情参考https://blog.csdn.net/qq_38204481/article/details/93890794

    这里进行了一些修改,修复了一些bug

    # -*- coding:utf-8 -*-
    from multiprocessing import Pool
    import os, time, random
    
    # -*- coding:utf-8 -*-
    
    """
    1.采集工作数据
        python php java html go
    2. sqlite 存储数据
    
    3.  表格存储数据
    
    4. 采集完成以邮件 方式发送给工作人员
    5. 将所有文件压缩再发邮件
    
    6. 数据分析
        每个分类的工作数量
        工资区间
        某个分类下每天的岗位数量
    
    7. 图表展示
    """
    
    """
    静态网站用xpath
    动态网站用jison.loads
        难点在于网址后面的参数加密
    
    找工作网站:
        智联招聘 前程无忧 拉勾网 Boss直聘
    
    """
    
    import requests
    from lxml import etree
    import sqlite3
    import re
    import time
    from random import randint
    import zmail
    import zipfile
    
    
    def init_sqlite(cols, tb_name='job', db_name="job.db"):
        con = sqlite3.connect(db_name)
        cols1 = cols
        cols1.append("")
        sql1 = " varchar(255) ,".join(cols)
        sql1 = sql1.rstrip(',')  # 去除两头的符号
    
        sql1 = """
            CREATE TABLE IF NOT EXISTS %s(
                id integer primary key autoincrement,
                %s
            )
        """ % (tb_name, sql1)
        # print(sql1)
        con.execute(sql1)
        return con
    
    
    def get(url):
        headers = {
            'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:67.0) Gecko/20100101 Firefox/67.0'
        }
        response = requests.get(url, headers=headers)
        response.encoding = response.apparent_encoding
        return response.text
    
    
    # 通过岗位名称搜工作 ,并存入数据库和表格
    def search_job_py_name(name, con):
        url = "https://search.51job.com/list/010000%252C020000%252C030200%252C040000%252C180200,000000,0000,00,9,99," + name + ",2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare="
        content = get(url)
        root = etree.HTML(content)
    
        total_page = root.xpath("//span[contains(text(),'页,到第')]/text()")[0]
        total_page = total_page.replace("共", "").replace("页,到第", "")
        print(total_page)
    
        for page in range(1, int(total_page) + 1):
            page_url = url.replace(".html", str(page) + ".html")
            content = get(url)
            root = etree.HTML(content)
            job_list = root.xpath("//div[@id='resultList']/div[@class='el']")
            for job in job_list:
                # rand=randint(1,10)
                # time.sleep(rand/10)
                job_name = job.xpath("p/span/a/@title")[0]
                job_href = job.xpath("p/span/a/@href")[0]
                job_company_name = job.xpath("span[1]/a/@title")
                job_company_name = job_company_name[0] if job_company_name else "没有公司名字"
                job_place = job.xpath("span[2]/text()")
                job_place = job_place[0] if job_place else "没有公司地点"
    
                if "-" in job_place:
                    job_city = job_place.split("-")[0]
                    job_section = job_place.split("-")[1]
                else:
                    job_city = job_place
                    job_section = ""
    
                job_salary = job.xpath("span[3]/text()")
                job_salary = job_salary[0] if job_salary else "面议"
                # 1.3-2万/月   4.5-8千/月   面议     1500元/天
                min_money = 0
                max_money = 0
    
                if "-" in job_salary:
                    job_type = "普通"
                    pattern = re.compile("[-万/月千万]")
                    result = pattern.split(job_salary)
                    if "万" in job_salary:
                        min_money = float(result[0]) * 10000
                        max_money = float(result[1]) * 10000
    
                    elif "千" in job_salary:
                        min_money = float(result[0]) * 1000
                        max_money = float(result[1]) * 1000
    
                    if "年" in job_salary:
                        min_money = min_money // 12
                        max_money = max_money // 12
                else:
                    job_type = "其他"
    
                min_money = str(min_money)
                max_money = str(max_money)
    
                job_date = job.xpath("span[4]/text()")
                job_date = job_date[0] if job_date else "没有发布时间"
    
                print(job_href, job_name, job_company_name, job_salary, job_place, job_date)
    
                data = {
                    'job_name': job_name,
                    'job_company_name': job_company_name,
                    'job_salary': job_salary,
                    'job_date': job_date,
                    'job_group': name,
                    'job_city': job_city,
                    'job_section': job_section,
                    'min_salary': min_money,
                    'max_salary': max_money,
                    'job_type': job_type,
                }
    
                save_to_sqlite(con, data)
                # save_to_csv(data)
            # break
    
    
    # 存储到数据库,连接对象,插入的数据,表名   cols_value为字典
    def save_to_sqlite(con, cols_value, tb_name="job"):
        cols_name = ",".join(cols_value.keys())  # 取字典的key
        col_values = "'" + "','".join(cols_value.values()) + "'"
        sql1 = """
            INSERT INTO %s (%s) values (%s)
        """ % (tb_name, cols_name, col_values)
        # print(sql1)
        con.execute(sql1)
        con.commit()
    
    
    # 保存到表格csv文件
    def save_to_csv(cols_value, csv_name="job.csv"):
        """
        csv 文件特点:数据之间用逗号隔开
        """
        values = cols_value.values()
        values = ",".join(values)
        f = open(csv_name, 'a', encoding="utf-8")
        f.write(values + '\n')
        f.close()
    
    
    # 发邮件
    def send_email(mail_name, file_name):
        # mail_content = {
        #     'subject': '重要通知',  # 随便填写
        #     'content_text': 'This message from zmail!',  # 随便填写
        # }
    
        #   发送带附件的邮件
        mail_content = {
            'subject': 'Success!',  # 邮件主题
            # 邮件内容
            'content_text': 'This message from zmail!',
    
            # 如果失败,,'content': 'This message from zmail!',
            'attachments': file_name,
        }
    
        # 使用你的邮件账户名和密码登录服务器
        server = zmail.server('tower111362058670@163.com', 'Root1996')
        # 发送邮件
        server.send_mail(mail_name, mail_content)
    
    
    # 压缩文件
    def zip_files(zip_name, files):
        # 创建压缩包
        azip = zipfile.ZipFile(zip_name, "w")
        # 把文件添加进压缩包,加密方式是ZIP_LZMA
        for file in files:
            azip.write(file, compress_type=zipfile.ZIP_LZMA)
        azip.close()
    
        pass
    
    
    
    
    
    
    
    def worker(job_name):
        t_start = time.time()
        print("%s开始执行,进程号为%d" % (job_name,os.getpid()))
        con = init_sqlite(
            ['job_name', 'job_company_name', 'job_city', 'job_section', 'job_salary', 'max_salary', 'min_salary',
             'job_type', 'job_group', 'job_date'])
        search_job_py_name(job_name, con)
        con.close()
    
    
    
        t_stop = time.time()
        print(job_name,"执行完毕,耗时%0.2f" % (t_stop-t_start))
    
    if __name__ == '__main__':
        job_list = ["python", "Java", "PHP", "C"]
        po = Pool(2)  # 定义一个进程池,最大进程数2
        for i in range(0,len(job_list)):
            po.apply_async(worker,(job_list[i],))  # Pool().apply_async(要调用的目标,(传递给目标的参数元祖,))
    
        print("----start----")
        po.close()  # 关闭进程池,关闭后po不再接收新的请求
        po.join()  # 等待po中所有子进程执行完成,再执行下面的代码,可以设置超时时间join(timeout=)
        print("-----end-----")
        # zip_files("工作情况.zip",job_list+".csv")
        # send_email("362058670@qq.com","工作情况.zip")
    
    

    0x02数据处理
    下面脚本对数据进行了一些处理。

    用数据库查询语句对数据进行了过滤。
    用柱状图和饼状图展示。
    特点是把代码都封装了,用的话直接调用就好。

    在这里插入图片描述
    上图仅供参考,数据暂时并不完整

    有机会学一下pandas numpy这两个比较专业的 数据分析库

    # -*- coding:utf-8 -*-
    
    """
    
    专业库   pandas   numpy
    
    也可以用sql分析
    """
    """
    
    
    统计上海的各语言的工作数量
    
    统计各语言薪资听均属
    """
    
    from pyecharts import Bar
    from pyecharts import Pie
    import sqlite3
    
    
    
    #统计一类工作对应的工作数量
    # 统计每种工作的数量
    
    #基础函数:封装了数据库查询过程,只需要传入查询语句和表名就能查询
    def select_sql(sql1,table_name="../2019-6-27/job.db"):
        """
            SELECT count(*) from job
            where job_type='普通' and job_group='python'
        """
        con = sqlite3.connect(table_name)
        #查询所有语言工作总数
    
        cursor=con.execute(sql1)
        result=cursor.fetchall()
        print("bbbb",result)
        # 列表推倒式
        data = []
        columns=[x[0] for x in result]
        """
        ('C', 47), ('Java', 52), ('PHP', 52), ('python', 48)
        经过columns=[x[0] for x in result]
        能够得到 ['C', 'Java', 'PHP', 'python']
        把2层循环精简到了一句话
        """
        print(columns)
        for i in range(len(result[0])-1):
            data.append([x[i+1] for x in result])
        return columns,data
    
    #功能函数:每种工作的数量
    def job_num_by_class(table_name="../2019-6-27/job.db"):
        sql1 = """
            SELECT job_group,count(*) from job
                    where job_type='普通'
                    group by job_group;
            """
        columns,data=select_sql(sql1,table_name)
        return columns, data
    
    #功能函数:统计每种工作的最大最小平均工资水平
    def max_mine_avg_salary(table_name="../2019-6-27/job.db"):
    
        #查询所有语言工作总数
        sql1="""
        SELECT job_group,avg(max_salary),avg(min_salary) from job
                where job_type='普通'
                group by job_group;
        """
        columns, data = select_sql(sql1, table_name)
        return columns, data
    
    #功能函数:每个城市的薪资平均最大值最小值水平
    def per_city_salary(table_name="../2019-6-27/job.db"):
        sql1 = """
            SELECT job_city,avg(max_salary),avg(min_salary) from job
                    where job_type='普通'
                    group by job_city;
            """
        columns, data = select_sql(sql1,table_name="../2019-6-27/job.db")
        return columns, data
    
    #功能函数:每个城市工作数量
    def per_city_num_of_job(table_name="../2019-6-27/job.db"):
        sql1 = """
                SELECT job_city,count(job_name) from job
                        where job_type='普通'
                        group by job_city;
                """
        columns, data = select_sql(sql1, table_name="../2019-6-27/job.db")
        print("aaaa",data)
        return columns,data
    
    # 创建柱状图,图名字,  columns表每一柱表示的含义,   datas每一柱的数据(二维数组,支持每一列有两柱)
    #table_context_name  字符串数组跟datas元素数量一样,每一组里面一柱的名字
    def create_bar(table_name,columns,datas,table_context_name):
        # //设置柱状图的主标题与副标题
        bar = Bar(table_name)
        # //添加柱状图的数据及配置项
        for i in range(len(datas)):
            bar.add(table_context_name[i], columns, datas[i], mark_line=["average"], mark_point=["max", "min"])
    
        # bar.add("蒸发量", columns, data2, mark_line=["average"], mark_point=["max", "min"])
        # //生成本地文件(默认为.html文件)
        bar.render(table_name+"_bar.html")
    
    #table_name 网页左上角的表名     columns每一个饼图中光标放上去的时候显示的名字
    # datas二维数组,存放每一个饼图需要的每一项数据  table_context_name
    def create_pie(table_name,columns ,datas,table_context_name):
    
        # //设置主标题与副标题,标题设置居中,设置宽度为900
        pie = Pie(table_name, title_pos='center', width=900)
    
        for i in range(len(datas)):
            # //加入数据,设置坐标位置为【75,50】,上方的colums选项取消显示,显示label标签  , center=[75, 50]
            pie.add(table_context_name[i], columns, datas[i], center=[25+50*(i%4), 50],is_legend_show=False, is_label_show=True)
        # //保存图表
        pie.render(table_name+"_pie.html")
    columns,data1=job_num_by_class("./job.db")
    # print(columns)
    # print(data1)
    create_bar("每种工作的数量",columns,data1,["每种工作的数量"])
    create_pie("每种工作的数量",columns,data1,["每种工作的数量"])
    
    columns,data1=max_mine_avg_salary("./job.db")
    create_bar("最大最小薪资平均数(每种语言)",columns,data1,["薪资水平最大值","薪资水平最小值"])
    create_pie("最大最小薪资平均数(每种语言)",columns,data1,["薪资水平最大值","薪资水平最小值"])
    columns,data1=per_city_salary("./job.db")
    create_bar("最大最小薪资平均数(每个城市)",columns,data1,["薪资水平最大值","薪资水平最小值"])
    create_pie("最大最小薪资平均数(每个城市)",columns,data1,["薪资水平最大值","薪资水平最小值"])
    
    columns,data1=per_city_num_of_job("./job.db")
    print("data1",data1)
    create_bar("每个城市工作数",columns,data1,["工作数"])
    create_pie("每个城市工作数",columns,data1,["工作数"])
    
    
    展开全文
  • 教女朋友用Python快速绘制图表

    千次阅读 2019-04-27 16:13:59
    ,比如各种线图,日历图,漏洞图,仪表盘,关系图,水球图,平行坐标系,饼图,极坐标系,雷达图,桑基图,主题河流图,树图,矩形树图,词云图,直角坐标系图,地理图表,3D图表,组合图表等,甚至可以画一个火辣的...

    安装anaconda3

    下载anaconda3

    下载地址:https://repo.anaconda.com/archive/Anaconda3-5.3.1-Windows-x86_64.exe

    安装

    一路next, 在安装完成时提示是否加入到环境变量,两个复选框都勾选,如图所示

    看到这个,就安装完成了

    验证安装

    按下windows + R 键,输入cmd, 回车,如图所示

    在命令行输入:

    pip -V,回车

    python -V,回车

    如果出现如下图所示,则表示安装成功,否则重新执行上一步

    安装pyecharts

    在命令行输入:

    pip install pyecharts

    看到Successfully installed则表示安装成功,如图所示

    启动jupyter

    在启动菜单找到jupyter notebook,打开

    在浏览器会打开一个http://localhost:8888/tree的页面,看到下图,则表示启动成功

    画第一个图表

    新建一个jupyter文件,

    输入代码

    from pyecharts import Bar
    
    attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
    v1 = [5, 20, 36, 10, 75, 90]
    v2 = [10, 25, 8, 60, 20, 80]
    bar = Bar("柱状图数据堆叠示例", width=550)
    bar.add("商家A", attr, v1, is_stack=True)
    bar.add("商家B", attr, v2, is_stack=True)
    
    bar

     shirt + enter运行

    还有很多酷炫的图可以画,参考《Python 数据可视化》,比如各种线图,日历图,漏洞图,仪表盘,关系图,水球图,平行坐标系,饼图,极坐标系,雷达图,桑基图,主题河流图,树图,矩形树图,词云图,直角坐标系图,地理图表,3D图表,组合图表等,甚至可以画一个火辣的Bra(Ps. 这个图是pyecharts官方示例)

    from pyecharts import Scatter
    
    scatter = Scatter("一个火辣的Bra", width=1000, height=480)
    v1 ,v2 = scatter.draw("./Pictures/cup.png")
    scatter.add("Cup", v1, v2)
    
    scatter

     cup.png这个图片是在知乎专栏的示例中下载的,由于图片过大,在页面不能正常渲染,会提示“NotebookApp.iopub_data_rate_limit”,解决办法请参考《利用Jupyter Notebook读取文件出现问题怎么修改》

    参考资料

    各种示例地址:《Python 数据可视化》

    github地址:https://github.com/pyecharts/pyecharts

    文档地址:https://pyecharts.org/#/

    展开全文
  • 第一章内容发布在(使用Python制作疫情数据分析可视化图表(一))https://blog.csdn.net/yue__yang/article/details/104538235,请自行食用。 二、时间序列与区域划分 1、数据类型转换为时间序列 在数据中,有一个...
  • 每日干货好文分享丨请点击+关注欢迎关注天善智能微信公众号,我们是专注于商业智能BI,...在使用Python绘制图表前,我们需要先安装两个库文件numpy和matplotlib。Numpy是Python开源的数值计算扩展,可用来存储和处...
  • CTEmail 的全称是Charts and Text Email,是一个发送带有图表[注意:图片不是在附件里!!!]邮件的简单粗暴的脚本。
  • 导语:使用 python-plotly 模块来进行压测数据的...Plotly是一款使用JavaScript开发的制图工具,提供了与主流数据分析语言交互的API(如:Python, R, MATLAB)。大家可以到官网 https://plot.ly/ 了解更多详细的信息
  • 初次学习python,连接Oracle数据库,导出数据到Excel,再从Excel里面读取数据进行绘图,生成png保存出来。 1、涉及到的python模块(模块安装就不进行解释了): import os import cx_Oracle import openpyxl import ...
  • python 生成各种统计图表,雷达图 柱状图 曲线图等图形报表
  • 主要给大家介绍了关于Python数据可视化教程之利用Matplotlib实现各种图表的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
  • 主要介绍了python的pyecharts绘制各种图表详细(附代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • python+pyecharts生成网页可视化图表,同一张网页生成多个图标
  • Python图形库 这个github存储库是的源代码,该网站显示了数百个使用Python制作的图表。 |
  • 资源名称:Python图表绘制:matplotlib绘图库入门资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。ReportLab工具包支持向PDF文件中添加许多不同的图表。事实上,我在前一篇文章中已经介绍了其中的一些。然而,我所见过的大多数示例,包括我自己的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,613
精华内容 33,045
关键字:

用python做图表

python 订阅