暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python数据可视化工具Matplotlib第二篇:折线图--续集

BPShare 2022-09-17
919


书接上回,我们继续聊折线图。

有细心的小伙伴已经注意到了,我们上次画的折线图,y轴单位是Billion:十亿,有点儿不太习惯这种表示方法,而且能改成中文版就好了。

那我们继续优化:

- 去掉科学计数法

- 更改标题

- 更改y轴标签为中文,并添加单位 - 亿,

- x轴标签为中文

先来看一下上次我们画的最终版的折线图

可以看到,由于数字太大,matplotlib已经帮我们自动完成了科学计数法的转换。

那第一步我们来去掉科学计数法:

    plt.figure(figsize=(15,8))
    plt.plot(china_pop_info['Year'], china_pop_info['Population'], label="China")
    plt.plot(india_pop_info['Year'], india_pop_info['Population'], label="India")
    plt.legend(fontsize=16)
    plt.xlabel('Year', fontsize=30)
    plt.ylabel('Population Number Billion', fontsize=30)
    plt.title('China VS India', fontsize=40)
    plt.tick_params(labelsize=15)
    plt.ticklabel_format(useOffset=False, style='plain') # 去掉默认的科学计数法,改成正常显示
    plt.show()


    好了,y轴的数字是转换成正常的数字了,但是这么大的数字,不易读啊。那我们再转换一次,把值转换成以亿为单位:

      plt.figure(figsize=(15,8))
      plt.plot(china_pop_info['Year'], china_pop_info['Population']/100000000, label="China") # 转换成以亿为单位
      plt.plot(india_pop_info['Year'], india_pop_info['Population']/100000000, label="India"# 转换成以亿为单位
      plt.xlabel('Year', fontsize=30)
      plt.ylabel('Population Number', fontsize=30)
      plt.title('China VS India Population', fontsize=40)
      plt.ticklabel_format(useOffset=False, style='plain') # 去掉默认的科学计数法,改成正常显示
      plt.tick_params(labelsize=15)
      plt.show()


      现在看起来舒服多了。


      有小伙伴说改成中文呢!那我们来试试

        plt.figure(figsize=(15,8))
        plt.plot(china_pop_info['Year'], china_pop_info['Population']/100000000, label="China") # 转换成以亿为单位
        plt.plot(india_pop_info['Year'], india_pop_info['Population']/100000000, label="India") # 转换成以亿为单位
        plt.legend()
        plt.xlabel('年份', fontsize=30) # x轴标签改成中文
        plt.ylabel('人口总数 亿', fontsize=30) # y轴标签改成中文
        plt.title('中国 vs 印度历年人口趋势图', fontsize=40) # 标题改成中文
        plt.ticklabel_format(useOffset=False, style='plain') # 去掉默认的科学计数法,改成正常显示
        plt.tick_params(labelsize=15)
        plt.show()

        结果发现生成的图上中文无法正常显示。想要正常显示中文,需要添加下面1~3行代码

          import matplotlib as mpl
          mpl.rcParams['font.family'] = 'SimHei' #设置中文字体
          plt.rcParams['axes.unicode_minus'] = False #设置支持中文字符集


          plt.figure(figsize=(15,8)) # 调整画布大小
          plt.plot(china_pop_info['Year'], china_pop_info['Population']/100000000, label="China") # 转换成以亿为单位
          plt.plot(india_pop_info['Year'], india_pop_info['Population']/100000000, label="India") # 转换成以亿为单位
          plt.plot(usa_pop_info['Year'], usa_pop_info['Population']/100000000, label="USA") # 转换成以亿为单位
          plt.legend() # 显示图例
          plt.xlabel('年份', fontsize=30) # 设置x轴标签,字体大小为30
          plt.ylabel('人口总数 亿', fontsize=30) # 设置y轴标签,字体大小为30
          plt.title('中国 vs 印度 vs 美帝历年人口趋势图', fontsize=40)  # 设置图片标题,字体大小为40
          plt.ticklabel_format(useOffset=False, style='plain') # 去掉默认的科学计数法,改成正常显示
          plt.tick_params(labelsize=15)
          plt.show() # 显示画图结果


          嗯~~~

          又有小伙伴提需求了,问:

          线条格式想改成虚线该怎么画?

          很简单,只需要在画图的时候,添加一个linestyle的参数就可以了

            plt.figure(figsize=(15,8))
            plt.plot(china_pop_info['Year'], china_pop_info['Population']/100000000, label="China", linestyle='--') # 折线显示方式
            plt.plot(india_pop_info['Year'], india_pop_info['Population']/100000000, label="India", linestyle='--') # 折线显示方式
            plt.legend()
            plt.xlabel('年份', fontsize=30) # x轴标签改成中文
            plt.ylabel('人口总数 / 亿', fontsize=30) # y轴标签改成中文
            plt.title('中国 vs 印度历年人口趋势图', fontsize=40) # 标题改成中文
            plt.ticklabel_format(useOffset=False, style='plain') # 去掉默认的科学计数法,改成正常显示
            plt.tick_params(labelsize=15)
            plt.show()

            linestyle这个参数常用的有两种表示方式:

            1. 字符串表示:"solid", "dotted", "dashed" or "dashdot" 或者字符: "-", "--", ".", "-."

            2. 元组表示:详见官网文档

            https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.html

            还有小伙伴问:

            折线图上标记拐点如何实现?

            再多添加一个参数:marker,有很多值可供选择,详见官方文档:

            https://matplotlib.org/stable/api/markers_api.html#module-matplotlib.markers

              plt.figure(figsize=(15,8))
              plt.plot(china_pop_info['Year'], china_pop_info['Population']/100000000, label="China", linestyle='dashed', marker='o') # 添加折线图拐点标记
              plt.plot(india_pop_info['Year'], india_pop_info['Population']/100000000, label="India", linestyle='--', marker='*'# 添加折线图拐点标记
              plt.legend()
              plt.xlabel('年份', fontsize=30) # x轴标签改成中文
              plt.ylabel('人口总数 / 亿', fontsize=30) # y轴标签改成中文
              plt.title('中国 vs 印度历年人口趋势图', fontsize=40) # 标题改成中文
              plt.ticklabel_format(useOffset=False, style='plain') # 去掉默认的科学计数法,改成正常显示
              plt.tick_params(labelsize=15)
              plt.show()


              好了,今天就先改到这里吧!有关折线图,如果还有其它想要知道的,点击关注本公众号,后台留言,我会尽快给大家回复。

              👇



              文章转载自BPShare,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论