图表绘制工具--Matplotlib 1
'''
【课程3.】 Matplotlib简介及图表窗口 Matplotlib → 一个python版的matlab绘图接口,以2D为主,支持python、numpy、pandas基本数据结构,运营高效且有较丰富的图表库 '''
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 图表窗口1 → plt.show() plt.plot(np.random.rand())
plt.show()
# 直接生成图表
输出
# 图表窗口2 → 魔法函数,嵌入图表 % matplotlib inline
x = np.random.randn()
y = np.random.randn()
plt.scatter(x,y)
# 直接嵌入图表,不用plt.show()
# <matplotlib.collections.PathCollection at ...> 代表该图表对象
输出:
# 图表窗口3 → 魔法函数,弹出可交互的matplotlib窗口 % matplotlib notebook
s = pd.Series(np.random.randn())
s.plot(style = 'k--o',figsize=(,))
# 可交互的matplotlib窗口,不用plt.show()
# 可做一定调整
输出:
# 图表窗口4 → 魔法函数,弹出matplotlib控制台 % matplotlib qt5
df = pd.DataFrame(np.random.rand(,),columns=['A','B'])
df.hist(figsize=(,),color='g',alpha=0.8)
# 可交互性控制台
# 如果已经设置了显示方式(比如notebook),需要重启然后再运行魔法函数
# 网页嵌入的交互性窗口 和 控制台,只能显示一个 #plt.close()
# 关闭窗口 #plt.gcf().clear()
# 每次清空图表内内容
输出:
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000CA745C0>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000CA7D9B0>]], dtype=object)
'''
【课程3.】 图表的基本元素 图表内基本参数设置 '''
# 图名,图例,轴标签,轴边界,轴刻度,轴刻度标签等 df = pd.DataFrame(np.random.rand(,),columns=['A','B'])
fig = df.plot(figsize=(,))
# figsize:创建图表窗口,设置窗口大小
# 创建图表对象,并赋值与fig plt.title('Interesting Graph - Check it out') # 图名
plt.xlabel('Plot Number') # x轴标签
plt.ylabel('Important var') # y轴标签 plt.legend(loc = 'upper right')
# 显示图例,loc表示位置
# 'best' : , (only implemented for axes legends)(自适应方式)
# 'upper right' : ,
# 'upper left' : ,
# 'lower left' : ,
# 'lower right' : ,
# 'right' : ,
# 'center left' : ,
# 'center right' : ,
# 'lower center' : ,
# 'upper center' : ,
# 'center' : , plt.xlim([,]) # x轴边界
plt.ylim([,1.5]) # y轴边界
plt.xticks(range()) # 设置x刻度
plt.yticks([,0.2,0.4,0.6,0.8,1.0,1.2]) # 设置y刻度
fig.set_xticklabels("%.1f" %i for i in range()) # x轴刻度标签
fig.set_yticklabels("%.2f" %i for i in [,0.2,0.4,0.6,0.8,1.0,1.2]) # y轴刻度标签
# 范围只限定图表的长度,刻度则是决定显示的标尺 → 这里x轴范围是0-,但刻度只是0-,刻度标签使得其显示1位小数
# 轴标签则是显示刻度的标签 print(fig,type(fig))
# 查看表格本身的显示方式,以及类别
输出:
# 其他元素可视性 x = np.linspace(-np.pi,np.pi,,endpoint = True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
# 通过ndarry创建图表 plt.grid(True, linestyle = "--",color = "gray", linewidth = "0.5",axis = 'x')
# 显示网格
# linestyle:线型
# color:颜色
# linewidth:宽度
# axis:x,y,both,显示x/y/两者的格网 plt.tick_params(bottom='on',top='off',left='on',right='off')
# 刻度显示 import matplotlib
matplotlib.rcParams['xtick.direction'] = 'out'
matplotlib.rcParams['ytick.direction'] = 'inout'
# 设置刻度的方向,in,out,inout
# 这里需要导入matploltib,而不仅仅导入matplotlib.pyplot frame = plt.gca()
#plt.axis('off')
# 关闭坐标轴
#frame.axes.get_xaxis().set_visible(False)
#frame.axes.get_yaxis().set_visible(False)
# x/y 轴不可见
输出:
'''
【课程3.】 图表的样式参数 linestyle、style、color、marker '''
# linestyle参数 plt.plot([i** for i in range()],
linestyle = '-.')
# '-' solid line style
# '--' dashed line style
# '-.' dash-dot line style
# ':'
输出:
# marker参数 s = pd.Series(np.random.randn().cumsum())
s.plot(linestyle = '--',
marker = '.')
# '.' point marker
# ',' pixel marker
# 'o' circle marker
# 'v' triangle_down marker
# '^' triangle_up marker
# '<' triangle_left marker
# '>' triangle_right marker
# '' tri_down marker
# '' tri_up marker
# '' tri_left marker
# '' tri_right marker
# 's' square marker
# 'p' pentagon marker
# '*' star marker
# 'h' hexagon1 marker
# 'H' hexagon2 marker
# '+' plus marker
# 'x' x marker
# 'D' diamond marker
# 'd' thin_diamond marker
# '|' vline marker
# '_' hline marker
输出
# color参数 plt.hist(np.random.randn(),
color = 'g',alpha = 0.8)
# alpha:-,透明度
# 常用颜色简写:red-r, green-g, black-k, blue-b, yellow-y df = pd.DataFrame(np.random.randn(, ),columns=list('ABCD'))
df = df.cumsum()
df.plot(style = '--.',alpha = 0.8,colormap = 'GnBu')
# colormap:颜色板,包括:
# Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r,
# Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r,
# PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r,
# RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r,
# YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r,
# cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r,
# gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot,
# gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, inferno, inferno_r, jet, jet_r, magma, magma_r, nipy_spectral,
# nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, seismic, seismic_r, spectral,
# spectral_r ,spring, spring_r, summer, summer_r, terrain, terrain_r, viridis, viridis_r, winter, winter_r # 其他参数见“颜色参数.docx”
输出:
# style参数,可以包含linestyle,marker,color ts = pd.Series(np.random.randn().cumsum(), index=pd.date_range('1/1/2000', periods=))
ts.plot(style = '--g.',grid = True)
# style → 风格字符串,这里包括了linestyle(-),marker(.),color(g)
# plot()内也有grid参数
输出:
# 整体风格样式 import matplotlib.style as psl
print(plt.style.available)
# 查看样式列表
psl.use('ggplot')
ts = pd.Series(np.random.randn().cumsum(), index=pd.date_range('1/1/2000', periods=))
ts.plot(style = '--g.',grid = True,figsize=(,))
# 一旦选用样式后,所有图表都会有样式,重启后才能关掉
输出:
['seaborn-ticks', 'ggplot', 'seaborn-paper', 'seaborn-whitegrid', 'grayscale', 'seaborn-deep', 'seaborn-poster', 'seaborn-talk', 'seaborn-muted', 'seaborn-white', 'seaborn-colorblind', 'seaborn-darkgrid', 'seaborn-dark', 'fivethirtyeight', 'bmh', 'dark_background', 'seaborn-bright', 'seaborn-pastel', 'classic', 'seaborn-notebook', 'seaborn-dark-palette']
'''
【课程3.】 刻度、注解、图表输出 主刻度、次刻度 '''
# 刻度 from matplotlib.ticker import MultipleLocator, FormatStrFormatter t = np.arange(0.0, 100.0, )
s = np.sin(0.1*np.pi*t)*np.exp(-t*0.01)
ax = plt.subplot() #注意:一般都在ax中设置,不再plot中设置
plt.plot(t,s,'--*')
plt.grid(True, linestyle = "--",color = "gray", linewidth = "0.5",axis = 'both')
# 网格
#plt.legend() # 图例 xmajorLocator = MultipleLocator() # 将x主刻度标签设置为10的倍数
xmajorFormatter = FormatStrFormatter('%.0f') # 设置x轴标签文本的格式
xminorLocator = MultipleLocator() # 将x轴次刻度标签设置为5的倍数
ymajorLocator = MultipleLocator(0.5) # 将y轴主刻度标签设置为0.5的倍数
ymajorFormatter = FormatStrFormatter('%.1f') # 设置y轴标签文本的格式
yminorLocator = MultipleLocator(0.1) # 将此y轴次刻度标签设置为0.1的倍数 ax.xaxis.set_major_locator(xmajorLocator) # 设置x轴主刻度
ax.xaxis.set_major_formatter(xmajorFormatter) # 设置x轴标签文本格式
ax.xaxis.set_minor_locator(xminorLocator) # 设置x轴次刻度 ax.yaxis.set_major_locator(ymajorLocator) # 设置y轴主刻度
ax.yaxis.set_major_formatter(ymajorFormatter) # 设置y轴标签文本格式
ax.yaxis.set_minor_locator(yminorLocator) # 设置y轴次刻度 ax.xaxis.grid(True, which='both') #x坐标轴的网格使用主刻度
ax.yaxis.grid(True, which='minor') #y坐标轴的网格使用次刻度
# which:格网显示 #删除坐标轴的刻度显示
#ax.yaxis.set_major_locator(plt.NullLocator())
#ax.xaxis.set_major_formatter(plt.NullFormatter())
输出:
# 注解 df = pd.DataFrame(np.random.randn(,))
df.plot(style = '--o')
plt.text(,0.5,'hahaha',fontsize=)
# 注解 → 横坐标,纵坐标,注解字符串
输出:
# 图表输出 df = pd.DataFrame(np.random.randn(, ), columns=list('ABCD'))
df = df.cumsum()
df.plot(style = '--.',alpha = 0.5)
plt.legend(loc = 'upper left')
plt.savefig('C:/Users/Hjx/Desktop/pic.png',
dpi=,
bbox_inches = 'tight',
facecolor = 'g',
edgecolor = 'b')
# 可支持png,pdf,svg,ps,eps…等,以后缀名来指定
# dpi是分辨率
# bbox_inches:图表需要保存的部分。如果设置为‘tight’,则尝试剪除图表周围的空白部分。
# facecolor,edgecolor: 图像的背景色,默认为‘w’(白色)
输出:
'''
【课程3.】 子图 在matplotlib中,整个图像为一个Figure对象
在Figure对象中可以包含一个或者多个Axes对象
每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域 plt.figure, plt.subplot '''
# plt.figure() 绘图对象
# plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None,
# frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, **kwargs) fig1 = plt.figure(num=,figsize=(,))
plt.plot(np.random.rand().cumsum(),'k--')
fig2 = plt.figure(num=,figsize=(,))
plt.plot(-np.random.rand().cumsum(),'k--')
# num:图表序号,可以试试不写或都为同一个数字的情况,图表如何显示
# figsize:图表大小 # 当我们调用plot时,如果设置plt.figure(),则会自动调用figure()生成一个figure, 严格的讲,是生成subplots()
输出:
# 子图创建1 - 先建立子图然后填充图表 fig = plt.figure(figsize=(,),facecolor = 'gray') ax1 = fig.add_subplot(,,) # 第一行的左图
plt.plot(np.random.rand().cumsum(),'k--')
plt.plot(np.random.randn().cumsum(),'b--')
# 先创建图表figure,然后生成子图,(,,)代表创建2*2的矩阵表格,然后选择第一个,顺序是从左到右从上到下
# 创建子图后绘制图表,会绘制到最后一个子图 ax2 = fig.add_subplot(,,) # 第一行的右图
ax2.hist(np.random.rand(),alpha=0.5) ax4 = fig.add_subplot(,,) # 第二行的右图
df2 = pd.DataFrame(np.random.rand(, ), columns=['a', 'b', 'c', 'd'])
ax4.plot(df2,alpha=0.5,linestyle='--',marker='.')
# 也可以直接在子图后用图表创建函数直接生成图表
输出:
# 子图创建1 - 先建立子图然后填充图表 fig = plt.figure(figsize=(,),facecolor = 'gray') ax1 = fig.add_subplot(,,) # 第一行的左图
plt.plot(np.random.rand().cumsum(),'k--')
plt.plot(np.random.randn().cumsum(),'b--')
# 先创建图表figure,然后生成子图,(,,)代表创建2*2的矩阵表格,然后选择第一个,顺序是从左到右从上到下
# 创建子图后绘制图表,会绘制到最后一个子图 ax2 = fig.add_subplot(,,) # 第一行的右图
ax2.hist(np.random.rand(),alpha=0.5) ax4 = fig.add_subplot(,,) # 第二行的右图
df2 = pd.DataFrame(np.random.rand(, ), columns=['a', 'b', 'c', 'd'])
ax4.plot(df2,alpha=0.5,linestyle='--',marker='.')
# 也可以直接在子图后用图表创建函数直接生成图表
输出:
# 子图创建2 - 创建一个新的figure,并返回一个subplot对象的numpy数组 → plt.subplot fig,axes = plt.subplots(,,figsize=(,))
ts = pd.Series(np.random.randn().cumsum())
print(axes, axes.shape, type(axes))
# 生成图表对象的数组 ax1 = axes[,]
ax1.plot(ts)
输出:
[[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000BB5A4A8>
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000C08B240>
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000C0D6550>]
[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000C10CDD8>
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000C15B160>
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000C190DA0>]] (, ) <class 'numpy.ndarray'>
# plt.subplots,参数调整 fig,axes = plt.subplots(,,sharex=True,sharey=True)
# sharex,sharey:是否共享x,y刻度 for i in range():
for j in range():
axes[i,j].hist(np.random.randn(),color='k',alpha=0.5)
plt.subplots_adjust(wspace=,hspace=)
# wspace,hspace:用于控制宽度和高度的百分比,比如subplot之间的间距
输出:
# 子图创建3 - 多系列图,分别绘制 df = pd.DataFrame(np.random.randn(, ), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
df.plot(style = '--.',alpha = 0.4,grid = True,figsize = (,),
subplots = True,
layout = (,),
sharex = False)
plt.subplots_adjust(wspace=,hspace=0.2)
# plt.plot()基本图表绘制函数 → subplots,是否分别绘制系列(子图)
# layout:绘制子图矩阵,按顺序填充
输出:
图表绘制工具--Matplotlib 1的更多相关文章
- 图表绘制工具--Matplotlib 2
''' [课程3.] 基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主 同时可延展出多种其他图表样式 plt.plot(kind='line', ax=No ...
- 【网易微专业】图表绘制工具Matplotlib
01 与图片的交互方式设置 这一小节简要介绍一下Matplotlib的交互方式 import pandas as pd import numpy as np import matplotlib.pyp ...
- 图表绘制工具--Matplotlib 3
''' [课程3.] 表格样式创建 表格视觉样式:Dataframe.style → 返回pandas.Styler对象的属性,具有格式化和显示Dataframe的有用方法 样式创建: ① Style ...
- 让IE8支持HTML5及canvas功能!chart.js图表绘制工具库IE8上兼容方案
第一步,我们加上对html5的支持. <!--[if IE]> <script src="/public/html5.js" type="text/ja ...
- Matplotlib 图表绘制工具学习笔记
import numpy as np import matplotlib.pyplot as plt import pandas as pd arr1 = np.random.rand(10)#一维数 ...
- Python图表绘制:matplotlib绘图库入门
matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并 ...
- Python图表绘制:matplotlib绘图库入门(转)
matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并 ...
- Android学习之 AChartEngine 图表绘制
Android 开源图表绘制工具AChartEngine地址:http://code.google.com/p/achartengine/ AChartEngine Android实现图表绘制和展示( ...
- Matplotlib Toolkits:地图绘制工具
Matplotlib Toolkits:地图绘制工具 有没有一种可以直接在详细地图(如谷歌地图)上绘制上百万坐标点的工具???谷歌地图坐标点多了也不能绘制了. Basemap (Not distrib ...
随机推荐
- CSS3解决移动端手指点击或滑动屏幕时出现的浅蓝色背景框
当时做完移动端页面发现点击图片(背景图按钮),出现了浅蓝色背景,实属影响页面美观,解决这一问题代码如下 html,body{ -webkit-tap-highlight-color: rgba(0,0 ...
- Oracle_11g中解决被锁定的scott用户的方法
在安装完Oracle10g和创建完oracle数据库之后,想用数据库自带的用户scott登录,看看连接是否成功. 问题: 在cmd命令中,用“sqlplus scott/ tiger”登录时,老是提 ...
- MySQL数据库 : 查询语句,连接查询及外键约束
查询指定字段 select 字段1,字段2 from 表名; 消除重复行(重复指的是结果集中的所有完全重复行) select distinct 字段1,字段2.. ...
- 3、springboot配置文件占位符
RandomValuePropertySource:配置文件中可以使用随机数 ${random.value}.${random.int}.${random.long}.${random.int(10) ...
- SAPバリアント
SAPバリアント VARI バリアント VARID バリアント一覧 VARIT バリアントテキスト VARIS バリアント割当 TVARV バリアント変数(クライアント非依存) TVARVC バリ ...
- python基础之正则表达式和re模块
正则表达式 就其本质而言,正则表达式(或 re)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...
- zookeeper: web ui工具的安装
zookeeper官方没有提供web用户界面,这使很多人在使用zookeeper(动物管理员)同时,并不是很容易的理解zookeeper的数据结构,还好淘宝有位大神用Nodejs写了一个web的ui工 ...
- PHP.29-TP框架商城应用实例-后台6-商品会员添加-价格、级别
首先把需求分析搞清楚 主要实现两个功能 1.会员管理,设置成为会员的要求 2.添加商品时,可设置会员优惠价格 具体实现 1.建表[会员级别限定表p39_member_level{Id,级别名称,积分下 ...
- 5,Linux之文档与目录结构
Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同.首先Linux没有“盘(C盘.D盘.E盘)”的概念.已经建立文件系统的硬盘分区被挂载到某一个目录下,用户通过操作目录来 ...
- sql server inser相关处理(添加一条,一次添加多条,Bulk插入多条)
1,insert语句 insert into 表一(字段一,字段二,字段三) value(值一,值二,值三) 2,sql 插入多条语句,其中完整值之间用逗号分割 insert into 表一(字段一, ...