//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() #输出相应的二维图像

												

pyhton matplotlib可视化图像基础(二维函数图、柱状图、饼图、直方图以及折线图)的更多相关文章

  1. 利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图、折线图、饼图

    利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图.折线图.饼图 数据: 折线图代码: import  pandas  as pdimport  matplotlib. ...

  2. C# WinForm开发系列之c# 通过.net自带的chart控件绘制饼图,柱形图和折线图的基础使用和扩展

    一.需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 1.设置chart1的属性Legends中默认的Legend1的Enable为false: ...

  3. MATLAB—二维函数可视化

    本文主要总结一下MATLAB的一些常用二维绘图指令. 文章目录 一.plot绘图指令 1.离散数据点形设置值 2.连续线型设置值 3.颜色设置值 4.常用属性和属性值 5.例题 二.subplot绘图 ...

  4. 图像处理之基础---二维卷积c实现

    http://wenku.baidu.com/link?url=4RzdmvP9sdaaUbnVEW4OyBD-g67wIOiJjKFF3Le_bu7hIiBS7I6hMcDmCXrQwsHvrsPv ...

  5. C语言基础--二维数组

    二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...

  6. 数据可视化基础专题(十一):Matplotlib 基础(三)常用图表(一)折线图、散点图、柱状图

    1 折线图 折线图主要用于表现随着时间的推移而产生的某种趋势. cat = ["bored", "happy", "bored", &quo ...

  7. Java基础--二维数组

    1.二维数组的定义 二维数组表示行列二维结构,在栈空间中的二维数组的地址指向堆空间中的一维数组,堆空间中的一维数组的地址又指向一维数组所在的内存空间. 2.二维数组的声明 二维数组声明有3种方式,推荐 ...

  8. C语言基础:二维数组 分类: iOS学习 c语言基础 2015-06-10 21:42 16人阅读 评论(0) 收藏

    二维数组和一位数组类似. 定义: 数据类型 数组名[行][列]={{ },{ }....}; 定义时,一维(行)的长度可以省略,但是二维(列)的长度不可以省略.但是访问时,一定使用双下标. 二维数组的 ...

  9. C Program基础-二维数组

    一维数组可以看作一行连续的数据,只有一个下标.C语言允许构造二维数组甚至多维数组,在实际问题中有时候常常需要用到二维数组(例如数学上的矩阵),二维数组有两个下标,以确定某个元素在数组中的位置. (一) ...

随机推荐

  1. 【转】CGI 和 FastCGI 协议的运行原理

    介绍 深入CGI协议 CGI的运行原理 CGI协议的缺陷 深入FastCGI协议 FastCGI协议运行原理 为什么是 FastCGI 而非 CGI 协议 CGI 与 FastCGI 架构 再看 Fa ...

  2. vue + element ui table表格二次封装 常用功能

    因为在做后台管理项目的时候用到了大量的表格, 且功能大多相同,因此封装了一些常用的功能, 方便多次复用. 组件封装代码: <template> <el-table :data=&qu ...

  3. eclipse问题集合

    [eclipse更换jdk版本]

  4. PHP PDO_MYSQL 链式操作 非链式操作类

    <?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +-------------------------------------- ...

  5. Day11 - N - Game HDU - 3389

    题目链接 题意是说有1到n个标号的盒子,选择一个非空的盒子A,B是否空无所谓,满足(A+B)%2=1,(A+B)%3=0,A>B 解上面的同余方程组,最小解为3,循环为2*3=6,那我们可以把前 ...

  6. 设计模式课程 设计模式精讲 16-2,3 代理模式Coding-静态代理-1

    1 代码演练 1.1 代码演练1(静态代理之分库操作) 1 代码演练 1.1 代码演练1(静态代理之分库操作) 需求: 订单管理,模拟前置后置方法,模拟分库管理 重点: 重点看订单静态代理,动态数据源 ...

  7. 对iOS开发的一些认识

    从事iOS工作这么久了,我觉得对它的认识也越来越深刻.尤其是越发明白自己从事的工作属于“客户端开发”.“软件工程”分类中. 我更喜欢“客户端开发”这个词语,相对“前端开发”而言.因为前者更能充分说明面 ...

  8. postgresql shell脚本传递参数并执行sql脚本并

    参考: https://stackoverflow.com/questions/7389416/postgresql-how-to-pass-parameters-from-command-line ...

  9. OpenCV数字识别

    输入命令: conda install opencv 返回信息:

  10. English_Rhymes_Phonics_resource

    English_Rhymes_Phonics_resource 1. 英语启蒙早有用吗?_英语启蒙 2. 26个英文字母背后的故事_英语启蒙 3. Phonics Song 4. 学Phonics前先 ...