柱状图、线性图和堆积柱状图

import matplotlib.pyplot as plt
plt.figure(1)
x = [1, 2, 3, 4]
y = [5, 4, 3, 2]
# 线性图
plt.subplot(231)
plt.plot(x, y)
# 柱状图
plt.subplot(232)
plt.bar(x, y)
# 水平柱状图
plt.subplot(233)
plt.barh(x, y)
# 堆积柱状图
plt.subplot(234)
plt.bar(x, y)
y1 = [7, 8, 5, 3]
plt.bar(x, y1, bottom=y, color='r')
# 箱线图
plt.subplot(235)
plt.boxplot(x)
# 散点图
plt.subplot(236)
plt.scatter(x, y)
plt.show()
plt.figure(2)
# 箱线图
plt.boxplot(x,vert=False)
plt.show()


  补充说明:
  在同一个箱线图选中可以呈现5种数据:
    最小值:数据集合的最小值;
    第二四分位数:其一下为数据集合中较低的25%数据
    中值:其以上为数据集合中较高的25%的数据
    第三四分位数:其以上为数据集合中较高的25%数据
    最大值:给定数据集合的最大值

简单的正弦图和余弦图

import matplotlib.pyplot as plt
import numpy as np
# 生成均匀分布256个点,从-pi到pi
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
y = np.cos(x)
y1 = np.sin(x)
plt.plot(x,y)
plt.plot(x,y1)
plt.title("Function $\sin$ and $\cos$")
# 设置x,y的上下限
plt.xlim(-3.0,3.0)
plt.ylim((-1.0,1.0))
# 刻度值
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$'])
plt.yticks([-1,0,1],[r'$-1$',r'$0$',r'$+1$'])
plt.show()

补充说明:
  axis([xmin,xmax,ymin,ymax]),默认值为0,1,0,1。

设置刻度和刻度标签

import matplotlib as mpl
import matplotlib.pyplot as plt
import datetime
import numpy as np
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
fig = plt.figure()
# 获取当前轴
ax = plt.gca()
# 设置日期范围
start = datetime.datetime(2020, 0o1, 0o1)
stop = datetime.datetime(2020,12,31)
delta = datetime.timedelta(days=1)
# 转化为matplotlib的日期
dates = mpl.dates.drange(start,stop,delta)
values = np.random.rand(len(dates))
ax = plt.gca()
ax.plot_date(dates,values,linestyle='-',marker='')
# 设定编译器
date_format = mpl.dates.DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_formatter(date_format)
# 自动套用格式的日期标签
# 默认情况下旋转标签30度
# 使用旋转参数来指定不同的旋转度
# 使用底部参数来给日期标签更多的空间
fig.autofmt_xdate()
plt.show()

  补充说明:
  报错信息:FutureWarning: Using an implicitly registered datetime converter for a matplotlib plotting method. The converter was registered by pandas on import. Future versions of pandas will require you to explicitly register matplotlib converters.

  解决方法:在代码中添加
  from pandas.plotting import register_matplotlib_converters
  register_matplotlib_converters()

添加图例和注解

import matplotlib.pyplot as plt
import numpy as np
# 生成不同的正态分布
x1 = np.random.normal(30,3,100)
x2 = np.random.normal(20,2,100)
x3 = np.random.normal(10,3,100)
plt.plot(x1,label='plot')
plt.plot(x2,label='2nd plot')
plt.plot(x3,label='last plot')
# 图例框
plt.legend(bbox_to_anchor=(0.,1.02,1.,.102),loc=3,ncol=3,mode='expand',borderaxespad=0.)
# 注解
plt.annotate('Important value',(55,20),xycoords='data',xytext=(5,38),arrowprops=dict(arrowstyle='->'))
plt.show()

  补充说明:
  位置参数:

> > >

字符串 数值 字符串 数值
upper right 1 center left 6
upper left 2 center right 7
lower left 3 lower center 8
lower right 4 upper center 9
right 5 center 10

  如果不想在图例中显示标签,可以将标签设置为_nolegend_。
  在上面的图例中,设置列数为ncol=3,设置位置为lower left。指定边界框(bbox_to_anchor)的起始位置为(0.0,1.02),并且设置宽度为1,高度为0.102,这些值都是基于归一化轴坐标系。参数mode可以设置为None或者expand,当为expand时,图例框会水平扩展至整个坐标轴区域。参数borderaxespad指定了坐标轴和图例边界之间的间距。
  对于注解,在plot中为xy坐标位置的数据点添加了一个字符串描述。通过设置xycoord=‘data’,可以指定注解和数据使用相同的坐标系。注解文本的起始位置通过xytext指定。箭头由xytext指向xy坐标位置。arrowprops字典中定义了很多箭头属性。

移动轴线到图中央

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-np.pi,np.pi,500,endpoint=True)
y = np.sin(x)
plt.plot(x,y)
ax = plt.gca()
# 隐藏轴线
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 移动左边和下边的轴到图中心
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
plt.show()

绘制2D直方图

import numpy as np
import matplotlib.pyplot as plt
mu = 100
sigma = 15
x = np.random.normal(mu,sigma,10000)
ax = plt.gca()
ax.hist(x,bins=35,color='b')
ax.set_xlabel('Values')
ax.set_ylabel('Frequency')
ax.set_title(r'$\mathrm{Histogram:}\ \mu=%d,\ \ sigma=%d$'%(mu,sigma))
plt.show()

  补充说明:

>>>>>

参数 说明
bins 表示直方图分割情况,可以是数量的一个整数值,也可以是表示bin的一个序列
range bin的范围,当bins参数为序列时,此参数无效。范围外的值将被忽略,默认值是None
normed 如果值为True,直方图的值将进行归一化(normalized)处理,形成概率密度。默认值为False
histtype 默认为bar类型的直方图,其他选项有以下几个:barstacked—用于多种数据的堆叠直方图;step—创建未填充的线形图;stepfilled—创建默认填充的线形图。histtype的默认值为bar
align 用于bin边界之间矩形条的居中设置。默认值为mid,其他值为left和right
color 指定直方图的颜色
orientation 通过设置为horizontal创建水平直方图。默认为vertical

绘制饼图

import matplotlib.pyplot as plt
# 做一个正方形的图和坐标轴
plt.figure(1,figsize=(6,6))
ax = plt.axes([0.1,0.1,0.8,0.8])
# 切片将按逆时针方向排列和绘制
labels = 'Spring','Summer','Autumn','Winter'
# 分数要么是x/sum(x)要么是x,如果sum(x) <= 1
x = [15,30,45,10]
explode = (0.1,0.1,0.1,0.1)
plt.pie(x,explode=explode,labels=labels,autopct='%1.1f%%',startangle=90)
plt.title('Rainy days by season')
plt.show()

  补充说明:
  饼图的每部分定义为x,或者x/sum(x) if sum(x) <= 1。通过给定一个分裂序列,可以获得分裂的效果,其中每一个元素表示每个圆弧间偏移量,为半径的百分比。用autopct参数来格式化绘制在圆弧中的标签,标签可以是一个格式化字符串或者是一个可调用的对象(函数)。如果没有指定starttangle,扇区将从x轴(角度0)开始逆时针排列;如果指定starttangle的值为90,饼图将从y轴开始。

误差条形图

  用误差条来可视化数据集合中的测量不确定度或者指出错误。误差条可以很容易地表示误差偏离数据集合的情况。可以显示一个标准差、一个标准误差或者95%的置信区间,因为在表示上没有统一标准,所以总是需要显式地表明误差条显示地是哪一种值(误差)。实验科学领域地大多数论文都应该在描述数据精度地时候包含误差条。

import numpy as np
import matplotlib.pyplot as plt
# 生成测量数
x = np.arange(0,10,1)
y = np.log(x)
# 从标准正态分布中加入一些误差样本
xe = 0.1*np.abs(np.random.randn(len(y)))plt.bar(x,y,yerr=xe,width=0.4,align='center',ecolor='r',color='cyan',label='experiment #1')
plt.xlabel('# measurement')
plt.ylabel('Measured values')
plt.title('Measurements')
plt.legend(loc='upper left')
plt.show()

  补充说明:
  参数:

width 给定误差条地宽度,默认值为0.8
bottom 如果指定bottom,其值会加到高度中,默认值为None
edgecolor 给定误差条边界颜色
ecolor 指定误差条地颜色
linewidth 误差条边界宽度,可以设为None和0
orientation 有vertical和horizontal
xerr,yerr 用于在柱状图上生成误差条

  上面用到的误差条叫做对称误差条,如果数据集合地性质是误差在两个方向上(正向和负向)不同,也可以用非对称误差条来表示。非对称误差条必须用一个两元列表(比如一个二维数组)来指定xerr和yerr,其中第一个列表包含负向误差的值,第二个包含正向误差的值。

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as scTEST_DATA = np.array([[1,2,3,2,1,2,3,4,2,3,2,1,2,3,4,4,3,2,3,2,3,2,1],[5,6,5,4,5,6,7,7,6,7,7,2,8,7,6,5,5,6,7,7,7,6,5],[9,8,7,8,8,7,4,6,6,5,4,3,2,2,2,3,3,4,5,5,5,6,1],[3,2,3,2,2,2,2,3,3,3,3,4,4,4,4,5,6,6,7,8,9,8,5],])# find mean for each of our observations
y = np.mean(TEST_DATA, axis=1, dtype=np.float64)
# and the 95% confidence interval
ci95 = np.abs(y - 1.96 * sc.sem(TEST_DATA, axis=1))# each set is one try
tries = np.arange(0, len(y), 1.0)# tweak grid and setup labels, limits
plt.grid(True, alpha=0.5)
plt.gca().set_xlabel('Observation #')
plt.gca().set_ylabel('Mean (+- 95% CI)')
plt.title("Observations with corresponding 95% CI as error bar.")plt.bar(tries, y, align='center', alpha=0.2)
plt.errorbar(tries, y, yerr=ci95)plt.show()


  该图形显示的95%置信区间为沿y轴方向延伸的须线。须线越宽,表示观测的平均值为真的可能性就越低。

带填充区域的图表

  matplotlib库允许对曲线间或者曲线下面的区域填充颜色,这样可以显示那部分区域的值。

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0.0,2,0.01)
# 测量两种不同的信号
y1 = np.sin(2*np.pi*x)
y2 = 1.2*np.sin(4*np.pi*x)
fig = plt.figure()
ax = plt.gca()
ax.plot(x,y1,x,y2,color='black')
ax.fill_between(x,y1,y2,where=y2>=y1,facecolor='darkblue',interpolate=True)
ax.fill_between(x,y1,y2,where=y2<=y1,facecolor='deeppink',interpolate=True)
ax.set_title('filled between')
plt.show()

带彩色标记的散点图

  散点图显示两组数据的值。数据可视化的工作由一组并不由线条连接的点完成。每个点的坐标位置由变量的值决定。一个变量是自变量(或称为无关变量),另一个是因变量(或称为相关变量)。

import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
y1 = np.random.randn(len(x))
y2 = 1.2+np.exp(x)
ax1 = plt.subplot(121)
plt.scatter(x,y1,color='indigo',alpha=0.3,edgecolors='white',label='no correl')
plt.xlabel('no correlation')
plt.grid(True)
plt.legend()ax2 = plt.subplot(122,sharey=ax1,sharex=ax1)
plt.scatter(x,y2,color='green',alpha=0.3,edgecolors='grey',label='correl')
plt.xlabel('strong correlation')
plt.grid(True)
plt.legend()
plt.show()

  参数:设置图形颜色的color,用来设置点状标记(默认为circle)的marker、alpha(透明度)、edgecolors(标记的边界颜色)和label(用于图例框)

绘制箱线图

  箱线图组成:第一个是箱体,包含从低四分位到高四分位地四分位范围信息。数据地中值由横穿箱体地一条线段表示。

  箱须从数据地第一个四分位(25%)到最后一个四分位(75%),向箱体地两端延伸。换句话说,箱须从四分位间范围地基线开始向外延伸四分位间距地1.5倍。在正态分布地情况下,箱须将涵盖总数据范围的99.3%。如果在箱须范围外还有值,它们将被显示为异常值。否则,箱须将覆盖整个数据范围。

import matplotlib.pyplot as plt# 定义数据
PROCESSES = {"A": [12, 15, 23, 24, 30, 31, 33, 36, 50, 73],"B": [6, 22, 26, 33, 35, 47, 54, 55, 62, 63],"C": [2, 3, 6, 8, 13, 14, 19, 23, 60, 69],"D": [1, 22, 36, 37, 45, 47, 48, 51, 52, 69],
}
DATA = PROCESSES.values()
LABELS = PROCESSES.keys()
# 绘制箱线图
plt.boxplot(DATA, widths=0.3)
# 添加坐标轴标签
plt.gca().xaxis.set_ticklabels(LABELS)
# 去掉图表垃圾信息
for spine in plt.gca().spines.values():spine.set_visible(False)
plt.gca().xaxis.set_ticks_position('none')
plt.gca().yaxis.set_ticks_position('left')
plt.gca().grid(axis='y', color='gray')
plt.ylabel("Errors observed over defined period.")
plt.xlabel("Process observed over defined period.")
plt.show()

【Python数据可视化(三)】定制图表相关推荐

  1. python数据可视化--pyecharts生成图表

    [python可视化系列]python数据可视化利器--pyecharts echarts官网 一.前言 echarts是什么?下面是来自官方的介绍: ECharts,缩写来自Enterprise C ...

  2. Python数据可视化:学术图表可视化(实战篇—5)

    目录 1.绘制学术图表方法元素 2.学术图表可视化案例 图表是学术论文中很重要的一部分,学术论文中实验结果一般以图表的形式呈现.读者经常通过图表来判断这篇文章是否值得阅读,所以每个图表都应该能不依赖正 ...

  3. Python数据可视化之Pygal图表类型

    将使用Python可视化包Pygal来生成可缩放的矢量图形文件 pygal官方文档:www.pygal.org/en/stable/ START 安装pygal pip install pygal - ...

  4. Python数据可视化:数据分布图表可视化

    目录 1.直方图 1.1.一维统计直方图 1.2.二维统计直方图 2.核密度估计图

  5. python可视化图表工具_酷炫的可视化图表工具来帮忙 深度评测五大Python数据可视化工具...

    原标题:酷炫的可视化图表工具来帮忙 深度评测五大Python数据可视化工具 不少Python用户的一大诉求是做出各种酷炫的可视化图表,而这就需要了解清楚工具特色,才好在制作不同类型图表顺利找到适合自己 ...

  6. Python数据可视化(三)绘制统计图形大全

    3.1 柱状图 以 Python 代码的形式讲解柱状图的绘制原理,这里重点讲解 bar()函数的使用方法. 代码: import matplotlib as mpl import matplotlib ...

  7. Python数据可视化matplotlib(一)—— 图表的基本元素

    Python数据可视化matplotlib(一)-- 图表的基本元素 图表创建 plt.show() # 图表窗口1 → plt.show()plt.plot(np.random.rand(10)) ...

  8. 《Python数据可视化之matplotlib实践》配套代码

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx <Python数据可视化之matplotlib实践> 借助matplotlib讲解 ...

  9. python数据可视化库_python和r中用于数据可视化的前9个库

    python数据可视化库 In the rapidly growing world of today, when technology is expanding at a rate like neve ...

最新文章

  1. IOS delegate 委托 使用 两个View之间传数据
  2. 计算机组成与结构实验箱,HQFC-B1计算机组成和数字电路实验箱
  3. 以太坊go-ethereum项目源码本地环境搭建
  4. 【Qt】Qt5.12编译MySQl5.7驱动(亲自测试成功)
  5. uni开发中可以用table标签么_「uni-app 组件」t-table 表格
  6. mysql jquery tree_php mysql js实现树形菜单代码
  7. java 反射 成员变量_Java 反射:成员变量
  8. xpath-语法基本-0223
  9. Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法(终极方法,不成功来找我~)
  10. 阔别七载,阿里港交所这对“初恋”再牵手
  11. 手把手教你使用stata进行cox回归并制作列线图
  12. pg_stat_statements
  13. 智能点餐mysql框架图_SpringBoot微信点餐系统--P3数据库设计
  14. 工业相机镜头的参数与选型
  15. 有信仰与无信仰家族200年对比,让世人震惊!!
  16. pytorch中torch.mul、torch.mm/torch.bmm、torch.matmul的区别
  17. 《30岁前的每一天》读书笔记
  18. 英语单词:through; fall through; write through
  19. 陕西渭南有什么小吃_爱问知识人
  20. Informatica元数据库解析

热门文章

  1. 嵌入(embedding)层的理解
  2. HTML之颜色属性值
  3. Java使用XDocReport导出Word(带图片)
  4. 比亚迪在连遭挫败之后,4月份迎来喜报,夺下热销榜第一名
  5. 达人评测 r9 6900hs和r7 5800hs选哪个
  6. HTML括号匹配算法
  7. 串口设置(波特率、数据位、校验位、停止位)
  8. 具影响力的优化mysql_业界最具影响力MySQL精品文章荟萃(300篇)
  9. 学历对计算机专业来说真的重要吗?
  10. 循环结构及猜数小游戏