zoukankan      html  css  js  c++  java
  • pyhton matplotlib可视化图像基础(二维函数图、柱状图、饼图、直方图以及折线图)

    //2019.07.22
    pyhton中matplotlib模块的应用
    pyhton中matplotlib是可视化图像库的第三方库,它可以实现图像的可视化,输出不同形式的图形
    1、可视化图形的输出和展示需要调用matplotlib第三方库的函数plt.show(),它的功能类似于print,相当于打印出自己需要输出的可视化图像,当然也可以用一些特殊的输出语句如下:
    %matplotlib.notebook
    %matplotlib.inline
    2、对于一般的二维图像输出可以用函数plt.plot(x,y)来进行输出,另外如果想要修改函数输出图像的一些细节格式,则含有以下几种方式:
    #对于线条属性的定义
    plt.figure(3)
    x=np.linspace(-np.pi,np.pi)
    y=np.sin(x)
    plt.plot(x,y,linewidth=4.0,color="r")
    #使用pot.plot()函数来设置线条属性
    plt.figure(4)
    line1,line2=plt.plot(x,y,"r",x,y+1,"g") #输出两个函数图像
    line1.set_antialiased(False) #对于线条属性进行后续的定义(抗锯齿形输出关闭)
    #使用plt.setp()进行设置
    plt.figure(5)
    line=plt.plot(x,y)
    plt.setp(line,color="g",linewidth=4.0)
    plt.setp(line,"color","r","linewidth",4)
    3、多个函数图像的子图的输出函数一般使用函数plt.subplot(x,y,z)这样来进行多个函数图像的输出,其中x,y代表的是整个函数图像是一个x行y列的图像集合,z代表你所要目前索要输出函数图像的顺序和位置。
    4、对于柱状图的输出主要用到的函数是plt.bar(x,y)函数,其中x,y是指两个相关的变量取值,对于输出柱状图的图像细节设置和修改主要包含以下几个方面:
    data=pd.value_counts(df["类型"])
    print(data)
    x=data.index #定义柱状图的x/y轴参数取值
    y=data.values
    plt.figure()
    plt.title("不同类型酒店的数量",fontsize=20) #设置标题的名称和标题的字体大小
    plt.xlabel("类型",fontsize=15) #设置x/y轴的名称个字体的大小
    plt.ylabel("数量",fontsize=15)
    plt.bar(x,y,color="r")#输出x/y两个变量的柱状图图像需要用函数plt.bar(x,y)
    plt.tick_params(labelsize=10) #设置坐标轴上数字党的大小尺寸
    plt.xticks(rotation=90) #设置x坐标轴的标注进行90度的旋转(展示效果会更加好)
    for a,b in zip(x,y):
    plt.text(a,b+5,b,ha="center",va="bottom",fontsize=10)
    #设置柱状图的标注文字形式,ha是指文字的对其方式,va是指柱状图横线在文字的相对位置
    5、对于任何形式的函数图像,如果想要对其中的某一点进行箭头的专门强调标注,需要用到函数:
    plt.annotate("评分4.5达到最大值",xy=(4.5,y2[4.5]),xytext=(3.5,55),arrowprops=dict(facecolor="red",edgecolor="green"))
    #对图像中任何一点进行箭头专门强调式的标注相所需要设置的函数
    其中xy代表的是需要标注强调的点的位置和坐标
    xytext表示的是强调标注文字开始的位置
    arrowprops代表的是对于所标注箭头格式的设置
    6、对于函数图像中添加任何标注信息需要用到函数plt.text(x,y,z)函数,其中x,y代表的是标注的位置,z表示的是标注的信息
    7、对于折线图的绘制就用一般的plt.plot(x,y)函数即可进行相应的输出,其中很多函数图像的细节设置主要包含以下几个方面(举例来讲):
    #折线图的绘制
    plt.figure()
    x1=df["评分"]
    print(x1)
    y1=df["评分"].value_counts()
    y2=y1.sort_index()
    print(y2)
    x=y2.index
    y=y2.values
    plt.plot(x,y,"g")
    plt.xlabel("评分大小")
    plt.ylabel("数量")
    plt.title("评分相同的酒店数量")
    for a,b in zip(x[::10],y[::10]):
    plt.text(a,b+3,b) #每隔10个点进行输出
    plt.annotate("评分4.5达到最大值",xy=(4.5,y2[4.5]),xytext=(3.5,55),arrowprops=dict(facecolor="red",edgecolor="green"))
    #对图像中任何一点进行箭头专门强调式的标注相所需要设置的函数
    plt.text(2.0,40,"随着评分的增加,其酒店数量也在增加") #在图像中添加任何一个标注信息使用的函数及其参数设置
    8、饼图的绘制:
    #饼图的绘制plt.pie()
    data=pd.cut(df["评分"],[0,3,4.3,4.6,4.8,5.0]).value_counts()
    print(data)
    y1=data.values
    print(y1)
    y=y1/sum(y1)
    plt.figure(figsize=(7,7))
    plt.title("酒店评分占比")
    #plt.pie(y1,labels=data.index,autopct="%.1f%%",colors="bygrk") #绘制饼图的函数设置
    plt.legend() #显示饼图图像的图例
    patches,l_text,p_text=plt.pie(y1,labels=data.index,autopct="%.1f%%",colors="bygrk") #绘制饼图的格式设置
    for i in p_text:
    i.set_size(15)
    i.set_color("w")
    for i in l_text:
    i.set_size(15)
    i.set_color("r") #对饼图内外文字字体的格式进行相应的设置


    9、直方图的绘制:
    #绘制频率分布直方图plt.hist()
    plt.figure(figsize=(10,6))
    plt.hist(df["评分"],bins=20,facecolor="r",edgecolor="k",alpha=0.9,histtype="bar")
    #直方图胡输出函数参数设置

    整体运行代码如下:

       #导入相应的matplotlib模块及其他常用的可视乎图像常用的模块

    import numpy as np
    import matplotlib.pyplot as plt
    plt.rcParams["font.sans-serif"]=["SimHei"] #输出图像的标题可以为中文正常输出
    plt.rcParams["axes.unicode_minus"]=False #可以正常输出图线里的负号
    plt.figure(1)
    plt.plot([0,1,2,3],[1,2,3,4],label="二维折线原图")
    plt.ylabel("y") #设置纵轴的名称
    plt.xlabel("x")
    plt.title("函数图像输出") #设置函数的标题
    plt.figure(2)
    plt.plot([1,2,3,4],[1,4,9,16],"r-",label="一次函数图像") #输出函数图像
    #plt.axis([0,10,0,20]) #设置坐标轴的显示范围
    plt.legend(loc=1) #设置函数图像曲线标注的位置
    print(np.arange(0,5,0.2))
    t=np.arange(0,5,0.2)
    plt.plot(t,t,"r--",t,t**2,"b*",t,t**3,"g^") #在同一个plot函数(同一个图像当中)当中输入三条函数图像
    #对于线条属性的定义
    plt.figure(3)
    x=np.linspace(-np.pi,np.pi)
    y=np.sin(x)
    plt.plot(x,y,linewidth=4.0,color="r")
    #使用pot.plot()函数来设置线条属性
    plt.figure(4)
    line1,line2=plt.plot(x,y,"r",x,y+1,"g") #输出两个函数图像
    line1.set_antialiased(False) #对于线条属性进行后续的定义(抗锯齿形输出关闭)
    #使用plt.setp()进行设置
    plt.figure(5)
    line=plt.plot(x,y)
    plt.setp(line,color="g",linewidth=4.0)
    plt.setp(line,"color","r","linewidth",4)
    #子图的输出函数
    #plt.subplot(numrows,numcols,fignum)
    def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)
    t1=np.arange(0,5,0.1)
    t2=np.arange(0,5,0.02)
    plt.figure(figsize=(10,6)) #输出一个新的函数图像尺寸大小为10x6
    plt.subplot(211) #子图1
    plt.plot(t1,f(t1),"bo",t2,f(t2),"k")
    plt.subplot(212) #子图2
    plt.plot(t2,np.cos(2*np.pi*t2),"r--")

    #输出其他一些的可视化常用图形(柱状图、饼图、直方图等)
    import warnings
    warnings.filterwarnings("ignore")#对警告的信息进行忽略
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    plt.rcParams["font.sans-serif"]=["SimHei"] #输出图像的标题可以为中文正常输出
    plt.rcParams["axes.unicode_minus"]=False #可以正常输出图线里的负号
    #导入我们所需要的各自第三方库
    df=pd.read_excel("D:/Byrbt2018/Study/Python数据分析课程+练习+讲解/Python数据分析课程+练习+讲解/作业/作业4/作业4/酒店数据1.xlsx")#导入w我们的表格数据文件
    print(df)
    print(df.index)
    print(df.columns)

    #绘制柱状图plt.bar()
    data=pd.value_counts(df["类型"])
    print(data)
    x=data.index #定义柱状图的x/y轴参数取值
    y=data.values
    plt.figure()
    plt.title("不同类型酒店的数量",fontsize=20) #设置标题的名称和标题的字体大小
    plt.xlabel("类型",fontsize=15) #设置x/y轴的名称个字体的大小
    plt.ylabel("数量",fontsize=15)
    plt.bar(x,y,color="r") #输出x/y两个变量的柱状图图像需要用函数plt.bar(x,y)
    plt.tick_params(labelsize=10) #设置坐标轴上数字党的大小尺寸
    plt.xticks(rotation=90) #设置x坐标轴的标注进行90度的旋转(展示效果会更加好)
    for a,b in zip(x,y):
    plt.text(a,b+5,b,ha="center",va="bottom",fontsize=10)
    #设置柱状图的标注文字形式,ha是指文字的对其方式,va是指柱状图横线在文字的相对位置

    #折线图的绘制
    plt.figure()
    x1=df["评分"]
    print(x1)
    y1=df["评分"].value_counts()
    y2=y1.sort_index()
    print(y2)
    x=y2.index
    y=y2.values
    plt.plot(x,y,"g")
    plt.xlabel("评分大小")
    plt.ylabel("数量")
    plt.title("评分相同的酒店数量")
    for a,b in zip(x[::10],y[::10]):
    plt.text(a,b+3,b) #每隔10个点进行输出
    plt.annotate("评分4.5达到最大值",xy=(4.5,y2[4.5]),xytext=(3.5,55),arrowprops=dict(facecolor="red",edgecolor="green"))
    #对图像中任何一点进行箭头专门强调式的标注相所需要设置的函数
    plt.text(2.0,40,"随着评分的增加,其酒店数量也在增加") #在图像中添加任何一个标注信息使用的函数及其参数设置

    #饼图的绘制plt.pie()
    data=pd.cut(df["评分"],[0,3,4.3,4.6,4.8,5.0]).value_counts()
    print(data)
    y1=data.values
    print(y1)
    y=y1/sum(y1)
    plt.figure(figsize=(7,7))
    plt.title("酒店评分占比")
    #plt.pie(y1,labels=data.index,autopct="%.1f%%",colors="bygrk") #绘制饼图的函数设置
    plt.legend() #显示饼图图像的图例
    patches,l_text,p_text=plt.pie(y1,labels=data.index,autopct="%.1f%%",colors="bygrk") #绘制饼图的格式设置
    for i in p_text:
    i.set_size(15)
    i.set_color("w")
    for i in l_text:
    i.set_size(15)
    i.set_color("r") #对饼图内外文字字体的格式进行相应的设置

    #绘制频率分布直方图plt.hist()
    plt.figure(figsize=(10,6))
    plt.hist(df["评分"],bins=20,facecolor="r",edgecolor="k",alpha=0.9,histtype="bar")
    #直方图胡输出函数参数设置
    plt.show() #输出相应的二维图像

    
    
  • 相关阅读:
    fw:Hadoop、Pig、Hive、Storm、NOSQL 学习资源收集【Updating】
    【Azure 环境】用 PowerShell 调用 AAD Token, 以及调用Azure REST API(如资源组列表)
    【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
    【Azure 应用程序见解】通过无代码方式在App Service中启用Application Insights后,如何修改在Application Insights中显示的App Service实例名呢?
    【Azure API 管理】API Management service (APIM) 如何实现禁止外网访问
    【Azure 环境】Azure门户中 Metrics 图表的聚合指标每项具体代表什么意思呢?
    【Azure Redis 缓存】Redis导出数据文件变小 / 在新的Redis复原后数据大小压缩近一倍问题分析
    【Azure 事件中心】在Windows系统中使用 kafkaconsumergroups.bat 查看Event Hub中kafka的consumer groups信息
    RadToolTip (点击按钮,弹出ToolTip)
    Url传值,传入中文,读取时出现乱码的解决方案
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/11228305.html
Copyright © 2011-2022 走看看