图表类别:线形图、柱状图、密度图,以横纵坐标两个维度为主

同时可延展出多种其他图表样式

plt.plot(kind='line', ax=None, figsize=None, use_index=True, title=None, grid=None, legend=False, style=None, logx=False, logy=False, loglog=False, xticks=None, yticks=None, xlim=None, ylim=None, rot=None, fontsize=None, colormap=None, table=False, yerr=None, xerr=None, label=None, secondary_y=False, **kwds)

1.Series直接生成图表

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
# 导入相关模块 import warnings
warnings.filterwarnings('ignore')
# 不发出警告 ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts = ts.cumsum()
ts.plot(kind='line',
label = 'hehe',
style = '--g.',
color = 'red',
alpha = 0.4,
use_index = True,
rot = 45,
grid = True,
ylim = [-50,50],
yticks = list(range(-50,50,10)),
figsize = (8,4),
title = 'test',
legend = True)
#plt.grid(True, linestyle = "--",color = "gray", linewidth = "0.5",axis = 'x') # 网格
plt.legend()
# Series.plot():series的index为横坐标,value为纵坐标
# kind → line,bar,barh...(折线图,柱状图,柱状图-横...)
# label → 图例标签,Dataframe格式以列名为label
# style → 风格字符串,这里包括了linestyle(-),marker(.),color(g)
# color → 颜色,有color指定时候,以color颜色为准
# alpha → 透明度,0-1
# use_index → 将索引用为刻度标签,默认为True
# rot → 旋转刻度标签,0-360
# grid → 显示网格,一般直接用plt.grid
# xlim,ylim → x,y轴界限
# xticks,yticks → x,y轴刻度值
# figsize → 图像大小
# title → 图名
# legend → 是否显示图例,一般直接用plt.legend()
# 也可以 → plt.plot()

输出:

2.Dataframe直接生成图表

# Dataframe直接生成图表

df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
df.plot(kind='line',
style = '--.',
alpha = 0.4,
use_index = True,
rot = 45,
grid = True,
figsize = (8,4),
title = 'test',
legend = True,
subplots = False,
colormap = 'Greens')
# subplots → 是否将各个列绘制到不同图表,默认False
# 也可以 → plt.plot(df)

输出:

3.柱状图与堆叠图

# 柱状图与堆叠图

fig,axes = plt.subplots(4,1,figsize = (10,10))
s = pd.Series(np.random.randint(0,10,16),index = list('abcdefghijklmnop'))
df = pd.DataFrame(np.random.rand(10,3), columns=['a','b','c']) s.plot(kind='bar',color = 'k',grid = True,alpha = 0.5,ax = axes[0]) # ax参数 → 选择第几个子图
# 单系列柱状图方法一:plt.plot(kind='bar/barh') # dataframe里面如果有标签的话,默认以标签作为横坐标 df.plot(kind='bar',ax = axes[1],grid = True,colormap='Reds_r')
# 多系列柱状图 df.plot(kind='bar',ax = axes[2],grid = True,colormap='Blues_r',stacked=True)
# 多系列堆叠图
# stacked → 堆叠 df.plot.barh(ax = axes[3],grid = True,stacked=True,colormap = 'BuGn_r') #横向的堆叠图 也可以这样写:df.plot(kind = 'barth')
# 新版本plt.plot.<kind>

输出:

5.柱状图的另一种画法

# 柱状图 plt.bar()

plt.figure(figsize=(10,4))
x = np.arange(10)
y1 = np.random.rand(10)
y2 = -np.random.rand(10) plt.bar(x,y1,width = 1,facecolor = 'yellowgreen',edgecolor = 'white',yerr = y1*0.1)
plt.bar(x,y2,width = 1,facecolor = 'lightskyblue',edgecolor = 'white',yerr = y2*0.1)
# x,y参数:x,y值
# width:宽度比例
# facecolor柱状图里填充的颜色、edgecolor是边框的颜色
# left-每个柱x轴左边界,bottom-每个柱y轴下边界 → bottom扩展即可化为甘特图 Gantt Chart
# align:决定整个bar图分布,默认left表示默认从左边界开始绘制,center会将图绘制在中间位置
# xerr/yerr :x/y方向error bar for i,j in zip(x,y1):
plt.text(i+0.3,j-0.15,'%.2f' % j, color = 'white')
for i,j in zip(x,y2):
plt.text(i+0.3,j+0.05,'%.2f' % -j, color = 'white')
# 给图添加text
# zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

输出:

6.面积图

# 面积图

fig,axes = plt.subplots(2,1,figsize = (8,6))
df1 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df2 = pd.DataFrame(np.random.randn(10, 4), columns=['a', 'b', 'c', 'd']) df1.plot.area(colormap = 'Greens_r',alpha = 0.5,ax = axes[0])
df2.plot.area(stacked=False,colormap = 'Set2',alpha = 0.5,ax = axes[1])
# 使用Series.plot.area()和DataFrame.plot.area()创建面积图
# stacked:是否堆叠,默认情况下,区域图被堆叠
# 为了产生堆积面积图,每列必须是正值或全部负值!
# 当数据有NaN时候,自动填充0,所以图标签需要清洗掉缺失值

输出:

7.填图

# 填图   默认和坐标轴之间做一个填充

fig,axes = plt.subplots(2,1,figsize = (8,6))

x = np.linspace(0, 1, 500)
y1 = np.sin(4 * np.pi * x) * np.exp(-5 * x)
y2 = -np.sin(4 * np.pi * x) * np.exp(-5 * x)
axes[0].fill(x, y1, 'r',alpha=0.5,label='y1')
axes[0].fill(x, y2, 'g',alpha=0.5,label='y2')
# 对函数与坐标轴之间的区域进行填充,使用fill函数
# 也可写成:plt.fill(x, y1, 'r',x, y2, 'g',alpha=0.5) x = np.linspace(0, 5 * np.pi, 1000)
y1 = np.sin(x)
y2 = np.sin(2 * x)
axes[1].fill_between(x, y1, y2, color ='b',alpha=0.5,label='area')
# 填充两个函数之间的区域,使用fill_between函数 for i in range(2):
axes[i].legend()
axes[i].grid()
# 添加图例、格网

输出:

8.饼图

# 饼图 plt.pie()
# plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,
# radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, hold=None, data=None) s = pd.Series(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], name='series')
plt.axis('equal') # 保证长宽相等
plt.pie(s,
explode = [0.1,0,0,0], #a和其他部分距离偏离0.1
labels = s.index,
colors=['r', 'g', 'b', 'c'],
autopct='%.2f%%',#以二位小数点的百分号的形式显示
pctdistance=0.6,
labeldistance = 1.2,
shadow = True,
startangle=0,
radius=1.5,
frame=False)
print(s)
# 第一个参数:数据
# explode:指定每部分的偏移量
# labels:标签
# colors:颜色
# autopct:饼图上的数据标签显示方式
# pctdistance:每个饼切片的中心和通过autopct生成的文本开始之间的比例
# labeldistance:被画饼标记的直径,默认值:1.1
# shadow:阴影
# startangle:开始角度
# radius:半径
# frame:图框
# counterclock:指定指针方向,顺时针或者逆时针

输出:

a    0.744065
b 2.069706
c 2.159888
d 0.642984
Name: series, dtype: float64

9.直方图+密度图

# 直方图+密度图

s = pd.Series(np.random.randn(1000))
s.hist(bins = 20,
histtype = 'bar',
align = 'mid',
orientation = 'vertical',
alpha=0.5,
normed =True)
# bin:箱子的宽度
# normed 标准化
# histtype 风格,bar,barstacked,step,stepfilled
# orientation 水平还是垂直{‘horizontal’, ‘vertical’}
# align : {‘left’, ‘mid’, ‘right’}, optional(对齐方式) s.plot(kind='kde',style='k--')
# 密度图 #如果把直方图和密度图放在一起的话,直方图必须标准化,否则不显示密度图 标准化就是把每个值放到0和1之间
#不标准化的化会显示实际值

输出:

10.堆叠直方图

# 堆叠直方图

plt.figure(num=1)
df = pd.DataFrame({'a': np.random.randn(1000) + 1, 'b': np.random.randn(1000),
'c': np.random.randn(1000) - 1, 'd': np.random.randn(1000)-2},
columns=['a', 'b', 'c','d'])
df.plot.hist(stacked=True,
bins=20,
colormap='Greens_r',
alpha=0.5,
grid=True)
# 使用DataFrame.plot.hist()和Series.plot.hist()方法绘制
# stacked:是否堆叠 df.hist(bins=50)
# 生成多个直方图

输出:

array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000001F92A9B9940>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000001F92AA016A0>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x000001F92AA4B8D0>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000001F92AA8A400>]], dtype=object)

11.散点图

# plt.scatter()散点图 散点图会用到很多 因为图片就是散点图
# plt.scatter(x, y, s=20, c=None, marker='o', cmap=None, norm=None, vmin=None, vmax=None,
# alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs) plt.figure(figsize=(8,6))
x = np.random.randn(1000)
y = np.random.randn(1000)
plt.scatter(x,y,marker='.',
s = np.random.randn(1000)*100,
cmap = 'Reds',
c = y,
alpha = 0.8,)
plt.grid()
# s:散点的大小
# c:散点的颜色
# vmin,vmax:亮度设置,标量
# cmap:colormap

输出:

12.散点矩阵

# pd.scatter_matrix()散点矩阵
# pd.scatter_matrix(frame, alpha=0.5, figsize=None, ax=None,
# grid=False, diagonal='hist', marker='.', density_kwds=None, hist_kwds=None, range_padding=0.05, **kwds) df = pd.DataFrame(np.random.randn(100,4),columns = ['a','b','c','d'])
pd.scatter_matrix(df,figsize=(10,6),
marker = 'o',
diagonal='kde',
alpha = 0.5,
range_padding=0.1)
# diagonal:({‘hist’, ‘kde’}),必须且只能在{‘hist’, ‘kde’}中选择1个 → 每个指标的频率图
# range_padding:(float, 可选),图像在x轴、y轴原点附近的留白(padding),该值越大,留白距离越大,图像远离坐标原点

输出:

array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61B496E10>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61C9FD550>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CA45F28>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CA80BE0>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CACAE10>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CB06BA8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CB4ECF8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CB5EFD0>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CD5E4E0>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CDA9438>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CDE7240>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CE32C18>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CE6E2E8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CEBBA58>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CEF9128>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CF42278>]],
dtype=object)

13.箱型图

# 箱型图
# plt.plot.box()绘制 fig,axes = plt.subplots(2,1,figsize=(10,6))
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
color = dict(boxes='DarkGreen', whiskers='DarkOrange', medians='DarkBlue', caps='Gray')
# 箱型图着色
# boxes → 箱线
# whiskers → 分位数与error bar横线之间竖线的颜色
# medians → 中位数线颜色
# caps → error bar横线颜色 df.plot.box(ylim=[0,1.2],
grid = True,
color = color,
ax = axes[0])
# color:样式填充 df.plot.box(vert=False,
positions=[1, 4, 5, 6, 8],
ax = axes[1],
grid = True,
color = color)
# vert:是否垂直,默认True
# position:箱型图占位

输出:

14.箱型图另一种画法

# 箱型图
# plt.boxplot()绘制
# pltboxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None,
# usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None,
# labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_xticks=True, autorange=False,
# zorder=None, hold=None, data=None) df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
plt.figure(figsize=(10,4))
# 创建图表、数据 f = df.boxplot(sym = 'o', # 异常点形状,参考marker
vert = True, # 是否垂直
whis = 1.5, # IQR,默认1.5,也可以设置区间比如[5,95],代表强制上下边缘为数据95%和5%位置
patch_artist = True, # 上下四分位框内是否填充,True为填充
meanline = False,showmeans=True, # 是否有均值线及其形状
showbox = True, # 是否显示箱线
showcaps = True, # 是否显示边缘线
showfliers = True, # 是否显示异常值
notch = False, # 中间箱体是否缺口
return_type='dict' # 返回类型为字典
)
plt.title('boxplot')
print(f) for box in f['boxes']:
box.set( color='b', linewidth=1) # 箱体边框颜色
box.set( facecolor = 'b' ,alpha=0.5) # 箱体内部填充颜色
for whisker in f['whiskers']:
whisker.set(color='k', linewidth=0.5,linestyle='-')
for cap in f['caps']:
cap.set(color='gray', linewidth=2)
for median in f['medians']:
median.set(color='DarkBlue', linewidth=2)
for flier in f['fliers']:
flier.set(marker='o', color='y', alpha=0.5)
# boxes, 箱线
# medians, 中位值的横线,
# whiskers, 从box到error bar之间的竖线.
# fliers, 异常值
# caps, error bar横线
# means, 均值的横线,

输出:

{'boxes': [<matplotlib.patches.PathPatch object at 0x000002A61CBCBA20>, 
<matplotlib.patches.PathPatch object at 0x000002A61CBDCA90>, <matplotlib.patches.PathPatch object at 0x000002A61CBF1940>, <matplotlib.patches.PathPatch object at 0x000002A61CC098D0>,
<matplotlib.patches.PathPatch object at 0x000002A61CC1F860>], 'means': [<matplotlib.lines.Line2D object at 0x000002A61CBD44A8>, <matplotlib.lines.Line2D object at 0x000002A61CBEC390>,
<matplotlib.lines.Line2D object at 0x000002A61CC03320>, <matplotlib.lines.Line2D object at 0x000002A61CC192B0>, <matplotlib.lines.Line2D object at 0x000002A61CB92438>],
'medians': [<matplotlib.lines.Line2D object at 0x000002A61CBC3EF0>, <matplotlib.lines.Line2D object at 0x000002A61CBE6B38>, <matplotlib.lines.Line2D object at 0x000002A61CBFEAC8>,
<matplotlib.lines.Line2D object at 0x000002A61CC14A58>, <matplotlib.lines.Line2D object at 0x000002A61CB96470>], 'caps': [<matplotlib.lines.Line2D object at 0x000002A61CBCEBE0>,
<matplotlib.lines.Line2D object at 0x000002A61CBCECF8>, <matplotlib.lines.Line2D object at 0x000002A61CBE2AC8>, <matplotlib.lines.Line2D object at 0x000002A61CBE69B0>,
<matplotlib.lines.Line2D object at 0x000002A61CBF7A58>, <matplotlib.lines.Line2D object at 0x000002A61CBFE940>, <matplotlib.lines.Line2D object at 0x000002A61CC0DF98>,
<matplotlib.lines.Line2D object at 0x000002A61CC148D0>, <matplotlib.lines.Line2D object at 0x000002A61CB9DF28>, <matplotlib.lines.Line2D object at 0x000002A61CB9D208>],
'fliers': [<matplotlib.lines.Line2D object at 0x000002A61CBD4B70>, <matplotlib.lines.Line2D object at 0x000002A61CBECB00>, <matplotlib.lines.Line2D object at 0x000002A61CC03A90>,
<matplotlib.lines.Line2D object at 0x000002A61CC19A20>, <matplotlib.lines.Line2D object at 0x000002A61CC24EB8>], 'whiskers': [<matplotlib.lines.Line2D object at 0x000002A61CBCBE80>,
<matplotlib.lines.Line2D object at 0x000002A61CBCBFD0>, <matplotlib.lines.Line2D object at 0x000002A61CBDCFD0>, <matplotlib.lines.Line2D object at 0x000002A61CBE2940>,
<matplotlib.lines.Line2D object at 0x000002A61CBF1F98>, <matplotlib.lines.Line2D object at 0x000002A61CBF78D0>, <matplotlib.lines.Line2D object at 0x000002A61CC09F28>,
<matplotlib.lines.Line2D object at 0x000002A61CC0D860>, <matplotlib.lines.Line2D object at 0x000002A61CC1FEB8>, <matplotlib.lines.Line2D object at 0x000002A61CC247F0>]}

# 箱型图
# plt.boxplot()绘制
# 分组汇总 df = pd.DataFrame(np.random.rand(10,2), columns=['Col1', 'Col2'] )
df['X'] = pd.Series(['A','A','A','A','A','B','B','B','B','B'])
df['Y'] = pd.Series(['A','B','A','B','A','B','A','B','A','B'])
print(df)
df.boxplot(by = 'X')
df.boxplot(column=['Col1','Col2'], by=['X','Y'])
# columns:按照数据的列分子图
# by:按照列分组做箱型图

输出:

       Col1      Col2  X  Y
0 0.661114 0.164637 A A
1 0.483369 0.361403 A B
2 0.954009 0.786664 A A
3 0.173198 0.500602 A B
4 0.156583 0.047123 A A
5 0.852358 0.672986 B B
6 0.823713 0.625156 B A
7 0.705710 0.632264 B B
8 0.940125 0.091521 B A
9 0.230993 0.753328 B B


												

Matplotlib 基本图表的绘制的更多相关文章

  1. matplotlib之scatter绘制散点

    # 使用matplotlib.pyplot.scatter绘制散点 import matplotlib.pyplot as plt from pylab import mpl # 设置默认字体,解决中 ...

  2. [Python] Matplotlib 图表的绘制和美化技巧

    目录 在一张画布中绘制多个图表 加图表元素 气泡图 组合图 直方图 雷达图 树状图 箱形图 玫瑰图 在一张画布中绘制多个图表 Matplotlib模块在绘制图表时,默认先建立一张画布,然后在画布中显示 ...

  3. matplotlib各图形绘制

    2D图形 import numpy as np import pandas as pd from pandas import Series,DataFrame import matplotlib.py ...

  4. 『科学计算』科学绘图库matplotlib学习之绘制动画

    基础 1.matplotlib绘图函数接收两个等长list,第一个作为集合x坐标,第二个作为集合y坐标 2.基本函数: animation.FuncAnimation(fig, update_poin ...

  5. python: 使用matplotlib的pyplot绘制图表

    工作中需要观察数据的变化趋势,用python写了一段小程序来用显示简单图表,分享出来方便有同样需求的人,matplotlib是个很不错的库. #!encode=utf8 from matplotlib ...

  6. python之 matplotlib模块之绘制堆叠柱状图

    我们先来看一个结果图 看到这个图,我个人的思路是 1 设置标题 import numpy as np import matplotlib.pyplot as plt plt.title('Scores ...

  7. 用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略

    我的新书<基于股票大数据分析的Python入门实战>于近日上架,在这篇博文向大家介绍我的新书:<基于股票大数据分析的Python入门实战>里,介绍了这本书的内容.这里将摘录出部 ...

  8. matplotlib画图工具/绘制散点图

    绘制散点图 import matplotlib.pyplot as plt fig=plt.figure() ax = fig.add_subplot(111) ax.scatter(x,y, s,c ...

  9. matplotlib常见图表绘制——极坐标图-雷达图、极轴图

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:斑点鱼 极坐标轴 调用subplot()创建子图时通过设置proje ...

随机推荐

  1. sqlserver学习2---java执行存储过程

    一.存储过程 1.新增操作存储过程 --------------1.新建 增加学生的存储过程---------------------------- set IDENTITY_INSERT stude ...

  2. Laravel 单元测试-模拟认证的用户

    在 Laravel 编写单元测试时经常会遇到需要模拟认证用户的时候,比如新建文章.创建订单等,那么在 Laravel unit test 中如何来实现呢? 官方解决方法 Laravel 的官方文档中的 ...

  3. 转载: Centos7 升级python3,解决升级后不兼容问题

    Centos7配置更新国内yum源 http://blog.csdn.net/qingguiyu/article/details/50721956 Centos7 升级python3,解决升级后不兼容 ...

  4. CentOS7 查询已安装的包方便整理 /卸载

    以PHP为例.首先查看已安装的PHP rpm -qa |grep php 输出结果: php-cli--.el7.x86_64 php-common--.el7.x86_64 查询rpm包的安装时间和 ...

  5. ShellSort uva

    ShellSort He made each turtle stand on another one's back And he piled them all up in a nine-turtle ...

  6. react中修改antd的默认样式

    最近在做react+antd项目.不可避免的遇到了修改antd默认样式的问题. 比如,table组件的表头背景色设置,如果直接使用元素样式,会修改整个项目的table.这里我用的方法是,给table添 ...

  7. Mysql跨数据库(在同一IP地址中)复制表

    数据库表间数据复制分类 在利用数据库开发时,常常会将一些表之间的数据互相导入.当然可以编写程序实现,但是,程序常常需要开发环境,不方便.最方便是利用sql语言直接导入.既方便而修改也简单.以下就是导入 ...

  8. ASP.NET MVC中使用表单上传文件时的注意事项

    最近了好久没写ASP.NET 使用HTML的FORM来上传文件了,结果写了个文件上传发现ASP.NET MVC的Controller中老是读取不到上传的文件. MVC的View(Index.cshtm ...

  9. ACL常用命令及工作原理

    What ACL 是一系列 IOS 命令,根据数据包报头中找到的信息来控制路由器应该转发还是应该丢弃数据包.ACL 是思科 IOS 软件中最常用的功能之一. 在配置后,ACL 将执行以下任务: 限制网 ...

  10. toad安装错误—Failed to Download products and updates

    近日,在公司云电脑上安装Toad for oracle,安装到中途总会出现如下错误,个人认为是Toad安装时需要下载/更新一些组件,公司网络对下载有所限制,导致报错,无法进行后续安装. 图1.Toad ...