资讯专栏INFORMATION COLUMN

Python如何利用matplotlib画出漂亮的分析图表呢?下面给大家解答

89542767 / 452人阅读

  小编写这篇文章的一个主要目的,主要是给大家讲解Python事宜,主要是利用Python中的matplotlib去做数据分析表,当我们把数据分析表做出来之后,怎么才能做的够漂亮一些呢?下面就给大家详细解答下。


  前言


  作为一名优秀的分析师,还是得学会一些让图表漂亮的技巧,这样子拿出去才更加有面子哈哈。好了,今天的锦囊就是介绍一下各种常见的图表,可以怎么来画吧。


  数据集引入


  首先引入数据集,我们还用一样的数据集吧,分别是Salary_Ranges_by_Job_Classification以及GlobalLandTemperaturesByCity。(具体数据集可以后台回复plot获取)


  #导入一些常用包
  import pandas as pd
  import numpy as np
  import seaborn as sns
  %matplotlib inline
  import matplotlib.pyplot as plt
  import matplotlib as mpl
  plt.style.use('fivethirtyeight')
  #解决中文显示问题,Mac
  from matplotlib.font_manager import FontProperties
  #查看本机plt的有效style
  print(plt.style.available)
  #根据本机available的style,选择其中一个,因为之前知道ggplot很好看,所以我选择了它
  mpl.style.use(['ggplot'])
  #['_classic_test','bmh','classic','dark_background','fast','fivethirtyeight','ggplot','grayscale','seaborn-bright','seaborn-colorblind','seaborn-dark-palette','seaborn-dark','seaborn-darkgrid','seaborn-deep','seaborn-muted','seaborn-notebook','seaborn-paper','seaborn-pastel','seaborn-poster','seaborn-talk','seaborn-ticks','seaborn-white','seaborn-whitegrid','seaborn','Solarize_Light2']
  #数据集导入
  #引入第1个数据集Salary_Ranges_by_Job_Classification
  salary_ranges=pd.read_csv('./data/Salary_Ranges_by_Job_Classification.csv')
  #引入第2个数据集GlobalLandTemperaturesByCity
  climate=pd.read_csv('./data/GlobalLandTemperaturesByCity.csv')
  #移除缺失值
  climate.dropna(axis=0,inplace=True)
  #只看中国
  #日期转换,将dt转换为日期,取年份,注意map的用法
  climate['dt']=pd.to_datetime(climate['dt'])
  climate['year']=climate['dt'].map(lambda value:value.year)
  climate_sub_china=climate.loc[climate['Country']=='China']
  climate_sub_china['Century']=climate_sub_china['year'].map(lambda x:int(x/100+1))
  climate.head()

  

01.png



      折线图

02.png

  折线图是比较简单的图表了,也没有什么好优化的,颜色看起来顺眼就好了。下面是从网上找到了颜色表,可以从中挑选~


  #选择上海部分天气数据


 df1=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .set_index('dt')
  df1.head()

03.png

  #折线图
  df1.plot(colors=['lime'])
  plt.title('AverageTemperature Of ShangHai')
  plt.ylabel('Number of immigrants')
  plt.xlabel('Years')
  plt.show()

04.png

  上面这是单条折线图,多条折线图也是可以画的,只需要多增加几列。


  #多条折线图
  df1=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .rename(columns={'AverageTemperature':'SH'})
  df2=climate.loc[(climate['Country']=='China')&(climate['City']=='Tianjin')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .rename(columns={'AverageTemperature':'TJ'})
  df3=climate.loc[(climate['Country']=='China')&(climate['City']=='Shenyang')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .rename(columns={'AverageTemperature':'SY'})
  #合并
  df123=df1.merge(df2,how='inner',on=['dt'])
  .merge(df3,how='inner',on=['dt'])
  .set_index(['dt'])
  df123.head()

  #多条折线图

05.png

  df123.plot()
  plt.title('AverageTemperature Of 3 City')
  plt.ylabel('Number of immigrants')
  plt.xlabel('Years')
  plt.show()

06.png

  饼图


  接下来是画饼图,我们可以优化的点多了一些,比如说从饼块的分离程度,我们先画一个“低配版”的饼图。

  df1=salary_ranges.groupby('SetID',axis=0).sum()

07.png

  #“低配版”饼图
  df1['Step'].plot(kind='pie',figsize=(7,7),
  autopct='%1.1f%%',
  shadow=True)
  plt.axis('equal')
  plt.show()

08.png

  #“高配版”饼图
  colors=['lightgreen','lightblue']#控制饼图颜色['lightgreen','lightblue','pink','purple','grey','gold']
  explode=[0,0.2]#控制饼图分离状态,越大越分离
  df1['Step'].plot(kind='pie',figsize=(7,7),
  autopct='%1.1f%%',startangle=90,
  shadow=True,labels=None,pctdistance=1.12,colors=colors,explode=explode)
  plt.axis('equal')
  plt.legend(labels=df1.index,loc='upper right',fontsize=14)
  plt.show()

09.png

  散点图


  散点图可以优化的地方比较少了,ggplot2的配色都蛮好看的,正所谓style选的好,省很多功夫!


  #选择上海部分天气数据
  df1=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .rename(columns={'AverageTemperature':'SH'})
  df2=climate.loc[(climate['Country']=='China')&(climate['City']=='Shenyang')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .rename(columns={'AverageTemperature':'SY'})
  #合并
  df12=df1.merge(df2,how='inner',on=['dt'])
  df12.head()

  

10.png

      #散点图
  df12.plot(kind='scatter',x='SH',y='SY',figsize=(10,6),color='darkred')
  plt.title('Average Temperature Between ShangHai-ShenYang')
  plt.xlabel('ShangHai')
  plt.ylabel('ShenYang')
  plt.show()

11.png

  面积图


  #多条折线图
  df1=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .rename(columns={'AverageTemperature':'SH'})
  df2=climate.loc[(climate['Country']=='China')&(climate['City']=='Tianjin')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .rename(columns={'AverageTemperature':'TJ'})
  df3=climate.loc[(climate['Country']=='China')&(climate['City']=='Shenyang')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .rename(columns={'AverageTemperature':'SY'})

 

12.png

   #合并
  df123=df1.merge(df2,how='inner',on=['dt'])
  .merge(df3,how='inner',on=['dt'])
  .set_index(['dt'])
  df123.head()
  colors=['red','pink','blue']#控制饼图颜色['lightgreen','lightblue','pink','purple','grey','gold']
  df123.plot(kind='area',stacked=False,
  figsize=(20,10),colors=colors)
  plt.title('AverageTemperature Of 3 City')
  plt.ylabel('AverageTemperature')
  plt.xlabel('Years')
  plt.show()

13.png

  直方图


  #选择上海部分天气数据
  df=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .set_index('dt')
  df.head()

14.png

  #最简单的直方图
  df['AverageTemperature'].plot(kind='hist',figsize=(8,5),colors=['grey'])
  plt.title('ShangHai AverageTemperature Of 2010-2013')#add a title to the histogram
  plt.ylabel('Number of month')#add y-label
  plt.xlabel('AverageTemperature')#add x-label
  plt.show()

15.png

  条形图


  #选择上海部分天气数据
  df=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']>='2010-01-01')]
  .loc[:,['dt','AverageTemperature']]
  .set_index('dt')
  df.head()
  
  df.plot(kind='bar',figsize=(10,6))
  plt.xlabel('Month')
  plt.ylabel('AverageTemperature')
  plt.title('AverageTemperature of shanghai')
  plt.show()
  df.plot(kind='barh',figsize=(12,16),color='steelblue')
  plt.xlabel('AverageTemperature')
  plt.ylabel('Month')
  plt.title('AverageTemperature of shanghai')
  plt.show()

16.png

  综上所述,这篇文章就给大家介绍完毕,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128354.html

相关文章

  • Python如何利用pandas读取csv数据并绘图

      小编写这篇文章的一个主要目的,主要是给大家去做一个解答,解答的内容主要是Python相关知识,比如说,会给大家讲解怎么样去利用Python pandas去做一个读取,读取的是csv数据,然后将这些数据去做一个绘图处理,具体内容下面给大家详细解答。  如何利用pandas读取csv数据并绘图  导包,常用的numpy和pandas,绘图模块matplotlib,  importmatplotli...

    89542767 评论0 收藏0
  • PyCharm调用matplotlib绘图时图像弹出问题详解

      小编写这篇文章的主要目的,主要是来给大家解答关于Python Pycharm的一些相关问题,包括涉及到如何调用其maplotlib的相关绘图问题,另外还涉及到图像弹出问题等的一些相关介绍。那么,具体问题怎么解答呢?下面就给大家详细解答下。  问题描述  在PyCharm中调用matplotlib绘制图像时,默认图像会在控制台输出(如图),当绘制图像较多时,控制台输出方式很不直观。  问题解决 ...

    89542767 评论0 收藏0
  • 【正经AI on Python入门系列】1.2 斗图工具优化——文本宽度自适应(来做点小数据分析

    摘要:在上一篇文章图工具的优化实现文本居中中,我们已经实现了对插入字体的左中右对齐显示,那因为上期文章混进去了不少语法讲解,所以后面的内容就顺延到这啦,哈哈哈。 showImg(https://segmentfault.com/img/bVbeIu4?w=250&h=250); 在上一篇文章【图工具的优化——实现文本居中】中,我们已经实现了对插入字体的左中右对齐显示,那因为上期文章混进去了不...

    fireflow 评论0 收藏0
  • Python如何使用Matplotlib库绘制图形

      Python Matplotlib作为一种可视化的工具,可以利用其可视化的应用,去做到绘制图形,比如可以利用其Matplotlib去进行绘制图形,具体的操作方法要做到什么样呢?下面就给大家详细解答下。  前言  Matplotlib可能是Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索使用matplotlib库实现简单的图形...

    89542767 评论0 收藏0
  • Python工具分析风险数据

    摘要:小安分析的数据主要是用户使用代理访问日志记录信息,要分析的原始数据以的形式存储。下面小安带小伙伴们一起来管窥管窥这些数据。在此小安一定一定要告诉你,小安每次做数据分析时必定使用的方法方法。 随着网络安全信息数据大规模的增长,应用数据分析技术进行网络安全分析成为业界研究热点,小安在这次小讲堂中带大家用Python工具对风险数据作简单分析,主要是分析蜜罐日志数据,来看看一般大家都使用代理i...

    Berwin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<