python可视化第一篇——基于matplotlib库

本文介绍了Python数据可视化的基础,重点关注matplotlib库的使用。讲解了如何创建绘图区,绘制条形图、曲线图,设置坐标轴、标签,并展示了如何绘制柱状图、饼图和散点图。此外,还涉及了激活函数的曲线图和三维可视化的初步操作。
摘要由CSDN通过智能技术生成

下文主要内容来自课堂讲义,由本人整理。

1. 画图前准备

1.1 pip安装pandas、numpy、plt库;

1.2 中文显示问题:

win系统直接添加:

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

但是在MAC系统下中文字体显示问题报错:

Font family [‘sans-serif‘] not found.Falling back to DejaVu Sans.

解决方法:

  1. 在python下输入代码获取自己mac内字体存放路径:matplotlib.matplotlib_fname()
  2. 下载黑体字体后拷贝到第1步中找到到路径中存放字体文件夹

    大致路径如下

    /Users/********/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf

  3. 需要在Finder根目录下,按shift+command+. (.是英文句号),开启隐藏目录后删除下图中Fontlist文件。重启python即可。

2. 引例——文件读取

数据,存为.csv文件:

,语文 ,数学 ,英语 ,计算机 ,物理 ,化学 ,体育 
宋丽英 ,86,64,85,88,90,55,98
王大伟 ,92,99,95,94,92,94,90
顾亦菲 ,91,87,99,95,95,92,85
鲁一平 ,78,99,75,81,83,88,92
潘晓雯 ,88,78,98,84,70,95,98

分析每门课的成绩,制作箱型图。

import matplotlib.pyplot as plt
import pandas as pd 
scores=pd.read_csv("data1.csv",index_col=0) 
plt.rcParams['font.sans-serif']=['SimHei']
scores.boxplot()
plt.show()

-|-

 3. 【例1】 条形图的绘制步骤

第一步:导入必要的库

import matplotlib.pyplot as plt
import numpy as np

第二步:新建绘图区或子绘图区

plt.figure(figsize=(4,3),facecolor='b') 
或者:
fig,ax=plt.subplots(figsize=(4,3))

第三步:准备数据

kc=('语文', '数学', '英语') # 课程信息
cj= (70, 95, 80) # 成绩数据

第四步:设置图表属性

ax.set_xlabel('课程')  #设置X轴的标题 
ax.set_ylabel('成绩')  #设置Y轴的标题
ax.set_title('成绩示例')  #设置图表标题
ax.set_xticks(np.arange(3))   #设置分类轴的刻度[0,1,2]
ax.set_xticklabels(kc)   #设置分类轴的显示标签

第五步:绘制图表

rt = plt.bar(np.arange(3) , cj , label='刘芸')
#参数1指定分类轴的刻度,参数2指定作图用的数据,参数3指定图例的标签文本

第六步:显示图例

ax.legend(bbox_to_anchor=(1,0.8)) #显示图例文字

第七步:显示图表

plt.show()

3.1 绘图区

 Matplotlib的图表区主要包括绘图区、图像和辅助显示对象
1 绘图区:包含Canvas、Figure和Axes三个对象,既可以由系统自动创建,也可以根据需要调用Figure()函数创建;
2 图像:调用各个绘图函数绘制的柱状图、折线图、饼图和散点图等;
3 辅助显示对象:包括标题、坐标轴、坐标轴名称、坐标轴刻度、坐标轴刻度 标签、图表边框线、网格线、图例、前景色等内容;

  • ·创建绘图区

(1)自动创建绘图区:直接调用绘图函数,系统自动创建一个默认大小的绘图区

(2)手动创建绘图区:如下

import matplotlib.pyplot as plt
plt.figure(figsize=(6,4),dpi=72) #绘图区指定为6*4英寸,分辨率为72 
plt.plot((3,6)) #绘制一条从顶点(0,3)到顶点(1,6)的直线
  • ·绘图区函数

(1)figure( )函数           用于生成一个全局绘图区

figure([num=None, figsize=None, dpi=None, facecolor=None......, **kwargs]) 

注意:当前绘图区上没有建立坐标轴,默认不显示该全局绘图区。
如:

plt.figure()

plt.figure(figsize=(6,6),facecolor=‘g')

(2)axes( )函数            生成坐标系风格的绘图区并显示

plt.axes(arg=None, **kwargs)

plt.axes(rect, projection=None, polar=False, **kwargs)如:plt.axes((0.1,0.3,0.5,0.8),facecolor='y')

注意:参数1对应(left,bottom,width,height),坐标原点默认为左下角的(0,0)

  • ·创建子绘图区

 (1)subplot( )函数 在全局绘图区创建子绘图区并显示 
subplot(nrows, ncols, index, **kwargs)
注意:如果nrows、ncols和index都小于10缩写为一个整数 
subplot(323)等价于subplot(3,2,3)
plt.subplot(1,1,1) #表示有1行1列,绘制在第1个子绘图区 
plt.subplot(232) #有2行3列共6个子绘图区,只显示第2个

 (2)add_subplot(nrows, ncols, index[, **kwargs])
   用于给已有全局绘图区添加子绘图区

import matplotlib.pyplot as plt 
import numpy as np 
fig1=plt.figure( ) 
fig1.add_subplot(222) 
plt.plot((5,3,5),c='b',marker='D') 
fig1.add_subplot(223) 
x=np.random.randint(0,100,50) 
y=np.random.normal(0,100,50) 
plt.scatter(x,y,c='r')
plt.show()

 (3)subplots(nrows, ncols, **fig_kw)函数
  创建全局绘图区,然后添加多个子绘图区并显示所有子绘图区

import matplotlib.pyplot as plt 
import numpy as np 
fig,ax = plt.subplots(nrows=2,ncols=3,figsize=(6,4),dpi=72) 
plt.subplots_adjust(wspace=0.3,hspace=0.3) #调整子绘图区之间的间隔 
ax[0][1].plot((5),'y^') #在第0行第1列的子绘图区绘制一个黄色三角标记 
ax[1][2].plot((3,8),'g') #在第1行第2列的子绘图区绘制一条绿色线条
plt.show()

 注意:
[1]当行数与列数值均大于1时,用ax[i][j]访问;
[2]当行数或列数只有一个值等于1时,用ax[i]访问; 
[3]当行数与列数值均等于1时,用plt或ax访问;

3.2 常见图表函数

函数 描述

plt.plot(x,y,color,linewidth,linestyle,label)

根据x,y数组绘制直线或曲线

plt.boxplot(data,label)

绘制一个箱型图

plt.bar(x, height, width, bottom, *, align='center', **kwargs)

绘制一个条形图(即柱状图)

plt.barh(y, width, height, left, *, align='center', **kwargs)

绘制一个横向条形图

plt.polar(theta,r)

绘制极坐标图

plt.pie(data,explode)

绘制饼图

plt.scatter(x,y)

绘制散点图

plt.hist(x,bins,normed)

绘制直方图

plt.contour(X,Y,Z,N)

绘制等高线

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值