资讯专栏INFORMATION COLUMN

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

89542767 / 788人阅读

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


  前言


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


  数据集引入


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


</>复制代码

  1.   #导入一些常用包
  2.   import pandas as pd
  3.   import numpy as np
  4.   import seaborn as sns
  5.   %matplotlib inline
  6.   import matplotlib.pyplot as plt
  7.   import matplotlib as mpl
  8.   plt.style.use('fivethirtyeight')
  9.   #解决中文显示问题,Mac
  10.   from matplotlib.font_manager import FontProperties
  11.   #查看本机plt的有效style
  12.   print(plt.style.available)
  13.   #根据本机available的style,选择其中一个,因为之前知道ggplot很好看,所以我选择了它
  14.   mpl.style.use(['ggplot'])
  15.   #['_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']
  16.   #数据集导入
  17.   #引入第1个数据集Salary_Ranges_by_Job_Classification
  18.   salary_ranges=pd.read_csv('./data/Salary_Ranges_by_Job_Classification.csv')
  19.   #引入第2个数据集GlobalLandTemperaturesByCity
  20.   climate=pd.read_csv('./data/GlobalLandTemperaturesByCity.csv')
  21.   #移除缺失值
  22.   climate.dropna(axis=0,inplace=True)
  23.   #只看中国
  24.   #日期转换,将dt转换为日期,取年份,注意map的用法
  25.   climate['dt']=pd.to_datetime(climate['dt'])
  26.   climate['year']=climate['dt'].map(lambda value:value.year)
  27.   climate_sub_china=climate.loc[climate['Country']=='China']
  28.   climate_sub_china['Century']=climate_sub_china['year'].map(lambda x:int(x/100+1))
  29.   climate.head()

  

01.png



      折线图

02.png

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


  #选择上海部分天气数据


</>复制代码

  1.  df1=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']&gt;='2010-01-01')]
  2.   .loc[:,['dt','AverageTemperature']]
  3.   .set_index('dt')
  4.   df1.head()

03.png

</>复制代码

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

04.png

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


</>复制代码

  1.   #多条折线图
  2.   df1=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']&gt;='2010-01-01')]
  3.   .loc[:,['dt','AverageTemperature']]
  4.   .rename(columns={'AverageTemperature':'SH'})
  5.   df2=climate.loc[(climate['Country']=='China')&(climate['City']=='Tianjin')&(climate['dt']&gt;='2010-01-01')]
  6.   .loc[:,['dt','AverageTemperature']]
  7.   .rename(columns={'AverageTemperature':'TJ'})
  8.   df3=climate.loc[(climate['Country']=='China')&(climate['City']=='Shenyang')&(climate['dt']&gt;='2010-01-01')]
  9.   .loc[:,['dt','AverageTemperature']]
  10.   .rename(columns={'AverageTemperature':'SY'})
  11.   #合并
  12.   df123=df1.merge(df2,how='inner',on=['dt'])
  13.   .merge(df3,how='inner',on=['dt'])
  14.   .set_index(['dt'])
  15.   df123.head()

  #多条折线图

05.png

</>复制代码

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

06.png

  饼图


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

</>复制代码

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

07.png

</>复制代码

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

08.png

</>复制代码

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

09.png

  散点图


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


</>复制代码

  1.   #选择上海部分天气数据
  2.   df1=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']&gt;='2010-01-01')]
  3.   .loc[:,['dt','AverageTemperature']]
  4.   .rename(columns={'AverageTemperature':'SH'})
  5.   df2=climate.loc[(climate['Country']=='China')&(climate['City']=='Shenyang')&(climate['dt']&gt;='2010-01-01')]
  6.   .loc[:,['dt','AverageTemperature']]
  7.   .rename(columns={'AverageTemperature':'SY'})
  8.   #合并
  9.   df12=df1.merge(df2,how='inner',on=['dt'])
  10.   df12.head()

  

10.png

</>复制代码

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

11.png

  面积图


</>复制代码

  1.   #多条折线图
  2.   df1=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']&gt;='2010-01-01')]
  3.   .loc[:,['dt','AverageTemperature']]
  4.   .rename(columns={'AverageTemperature':'SH'})
  5.   df2=climate.loc[(climate['Country']=='China')&(climate['City']=='Tianjin')&(climate['dt']&gt;='2010-01-01')]
  6.   .loc[:,['dt','AverageTemperature']]
  7.   .rename(columns={'AverageTemperature':'TJ'})
  8.   df3=climate.loc[(climate['Country']=='China')&(climate['City']=='Shenyang')&(climate['dt']&gt;='2010-01-01')]
  9.   .loc[:,['dt','AverageTemperature']]
  10.   .rename(columns={'AverageTemperature':'SY'})

 

12.png

</>复制代码

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

13.png

  直方图


</>复制代码

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

14.png

</>复制代码

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

15.png

  条形图


</>复制代码

  1.   #选择上海部分天气数据
  2.   df=climate.loc[(climate['Country']=='China')&(climate['City']=='Shanghai')&(climate['dt']&gt;='2010-01-01')]
  3.   .loc[:,['dt','AverageTemperature']]
  4.   .set_index('dt')
  5.   df.head()
  6.   
  7.   df.plot(kind='bar',figsize=(10,6))
  8.   plt.xlabel('Month')
  9.   plt.ylabel('AverageTemperature')
  10.   plt.title('AverageTemperature of shanghai')
  11.   plt.show()
  12.   df.plot(kind='barh',figsize=(12,16),color='steelblue')
  13.   plt.xlabel('AverageTemperature')
  14.   plt.ylabel('Month')
  15.   plt.title('AverageTemperature of shanghai')
  16.   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元查看
<