图表绘制工具--Matplotlib 2
'''
【课程3.】 基本图表绘制 plt.plot() 图表类别:线形图、柱状图、密度图,以横纵坐标两个维度为主
同时可延展出多种其他图表样式 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) '''
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
# Series直接生成图表 ts = pd.Series(np.random.randn(), index=pd.date_range('1/1/2000', periods=))
ts = ts.cumsum()
ts.plot(kind='line',
label = 'hehe',
style = '--g.',
color = 'red',
alpha = 0.4,
use_index = True,
rot = ,
grid = True,
ylim = [-,],
yticks = list(range(-,,)),
figsize = (,),
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 → 透明度,-
# use_index → 将索引用为刻度标签,默认为True
# rot → 旋转刻度标签,-
# grid → 显示网格,一般直接用plt.grid
# xlim,ylim → x,y轴界限
# xticks,yticks → x,y轴刻度值
# figsize → 图像大小
# title → 图名
# legend → 是否显示图例,一般直接用plt.legend()
# 也可以 → plt.plot()
输出:
# Dataframe直接生成图表 df = pd.DataFrame(np.random.randn(, ), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
df.plot(kind='line',
style = '--.',
alpha = 0.4,
use_index = True,
rot = ,
grid = True,
figsize = (,),
title = 'test',
legend = True,
subplots = False,
colormap = 'Greens')
# subplots → 是否将各个列绘制到不同图表,默认False
# 也可以 → plt.plot(df)
输出:
'''
【课程3.】 柱状图、堆叠图 plt.plot(kind='bar/barh') , plt.bar() '''
# 柱状图与堆叠图 fig,axes = plt.subplots(,,figsize = (,))
s = pd.Series(np.random.randint(,,),index = list('abcdefghijklmnop'))
df = pd.DataFrame(np.random.rand(,), columns=['a','b','c']) s.plot(kind='bar',color = 'k',grid = True,alpha = 0.5,ax = axes[]) # ax参数 → 选择第几个子图
# 单系列柱状图方法一:plt.plot(kind='bar/barh') df.plot(kind='bar',ax = axes[],grid = True,colormap='Reds_r')
# 多系列柱状图 df.plot(kind='bar',ax = axes[],grid = True,colormap='Blues_r',stacked=True)
# 多系列堆叠图
# stacked → 堆叠 df.plot.barh(ax = axes[],grid = True,stacked=True,colormap = 'BuGn_r')
# 新版本plt.plot.<kind>
输出:
# 柱状图 plt.bar() plt.figure(figsize=(,))
x = np.arange()
y1 = np.random.rand()
y2 = -np.random.rand() plt.bar(x,y1,width = ,facecolor = 'yellowgreen',edgecolor = 'white',yerr = y1*0.1)
plt.bar(x,y2,width = ,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() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
输出:
# 外嵌图表plt.table()
# table(cellText=None, cellColours=None,cellLoc='right', colWidths=None,rowLabels=None, rowColours=None, rowLoc='left',
# colLabels=None, colColours=None, colLoc='center',loc='bottom', bbox=None) data = [[ , , , , ],
[ , , , , ],
[ , , , , ],
[ , , , , ],
[, , , , ]]
columns = ('Freeze', 'Wind', 'Flood', 'Quake', 'Hail')
rows = ['%d year' % x for x in (, , , , )]
df = pd.DataFrame(data,columns = ('Freeze', 'Wind', 'Flood', 'Quake', 'Hail'),
index = ['%d year' % x for x in (, , , , )])
print(df) df.plot(kind='bar',grid = True,colormap='Blues_r',stacked=True,figsize=(,))
# 创建堆叠图 plt.table(cellText = data,
cellLoc='center',
cellColours = None,
rowLabels = rows,
rowColours = plt.cm.BuPu(np.linspace(, 0.5,))[::-], # BuPu可替换成其他colormap
colLabels = columns,
colColours = plt.cm.Reds(np.linspace(, 0.5,))[::-],
rowLoc='right',
loc='bottom')
# cellText:表格文本
# cellLoc:cell内文本对齐位置
# rowLabels:行标签
# colLabels:列标签
# rowLoc:行标签对齐位置
# loc:表格位置 → left,right,top,bottom plt.xticks([])
# 不显示x轴标注
输出:
Freeze Wind Flood Quake Hail
year
year
year
year
year
'''
【课程3.】 面积图、填图、饼图 plt.plot.area()
plt.fill(), plt.fill_between()
plt.pie() '''
# 面积图 fig,axes = plt.subplots(,,figsize = (,))
df1 = pd.DataFrame(np.random.rand(, ), columns=['a', 'b', 'c', 'd'])
df2 = pd.DataFrame(np.random.randn(, ), columns=['a', 'b', 'c', 'd']) df1.plot.area(colormap = 'Greens_r',alpha = 0.5,ax = axes[])
df2.plot.area(stacked=False,colormap = 'Set2',alpha = 0.5,ax = axes[])
# 使用Series.plot.area()和DataFrame.plot.area()创建面积图
# stacked:是否堆叠,默认情况下,区域图被堆叠
# 为了产生堆积面积图,每列必须是正值或全部负值!
# 当数据有NaN时候,自动填充0,所以图标签需要清洗掉缺失值
输出:
# 填图 fig,axes = plt.subplots(,,figsize = (,)) x = np.linspace(, , )
y1 = np.sin( * np.pi * x) * np.exp(- * x)
y2 = -np.sin( * np.pi * x) * np.exp(- * x)
axes[].fill(x, y1, 'r',alpha=0.5,label='y1')
axes[].fill(x, y2, 'g',alpha=0.5,label='y2')
# 对函数与坐标轴之间的区域进行填充,使用fill函数
# 也可写成:plt.fill(x, y1, 'r',x, y2, 'g',alpha=0.5) x = np.linspace(, * np.pi, )
y1 = np.sin(x)
y2 = np.sin( * x)
axes[].fill_between(x, y1, y2, color ='b',alpha=0.5,label='area')
# 填充两个函数之间的区域,使用fill_between函数 for i in range():
axes[i].legend()
axes[i].grid()
# 添加图例、格网
输出:
# 饼图 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=(, ), frame=False, hold=None, data=None) s = pd.Series( * np.random.rand(), index=['a', 'b', 'c', 'd'], name='series')
plt.axis('equal') # 保证长宽相等
plt.pie(s,
explode = [0.1,,,],
labels = s.index,
colors=['r', 'g', 'b', 'c'],
autopct='%.2f%%',
pctdistance=0.6,
labeldistance = 1.2,
shadow = True,
startangle=,
radius=1.5,
frame=False)
print(s)
# 第一个参数:数据
# explode:指定每部分的偏移量
# labels:标签
# colors:颜色
# autopct:饼图上的数据标签显示方式
# pctdistance:每个饼切片的中心和通过autopct生成的文本开始之间的比例
# labeldistance:被画饼标记的直径,默认值:1.1
# shadow:阴影
# startangle:开始角度
# radius:半径
# frame:图框
# counterclock:指定指针方向,顺时针或者逆时针
输出:
'''
【课程3.】 直方图 plt.hist(x, bins=, range=None, normed=False, weights=None, cumulative=False, bottom=None,
histtype='bar', align='mid', orientation='vertical',rwidth=None, log=False, color=None, label=None,
stacked=False, hold=None, data=None, **kwargs) '''
# 直方图+密度图 s = pd.Series(np.random.randn())
s.hist(bins = ,
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--')
# 密度图
输出:
# 堆叠直方图 plt.figure(num=)
df = pd.DataFrame({'a': np.random.randn() + , 'b': np.random.randn(),
'c': np.random.randn() - , 'd': np.random.randn()-},
columns=['a', 'b', 'c','d'])
df.plot.hist(stacked=True,
bins=,
colormap='Greens_r',
alpha=0.5,
grid=True)
# 使用DataFrame.plot.hist()和Series.plot.hist()方法绘制
# stacked:是否堆叠 df.hist(bins=)
# 生成多个直方图
输出:
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E3E70B8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000C0F50F0>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000BA11E48>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E434B70>]], dtype=object)
<matplotlib.figure.Figure at 0xbcbbb00>
'''
【课程3.】 散点图、矩阵散点图 plt.scatter(), pd.scatter_matrix() '''
# plt.scatter()散点图
# plt.scatter(x, y, s=, 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=(,))
x = np.random.randn()
y = np.random.randn()
plt.scatter(x,y,marker='.',
s = np.random.randn()*,
cmap = 'Reds',
c = y,
alpha = 0.8,)
plt.grid()
# s:散点的大小
# c:散点的颜色
# vmin,vmax:亮度设置,标量
# cmap:colormap
输出:
# 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(,),columns = ['a','b','c','d'])
pd.scatter_matrix(df,figsize=(,),
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 0x000000000E55AB38>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E889320>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E8D1EF0>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E911518>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E95AFD0>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E99C080>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E9E5C50>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E5403C8>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E84DAC8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E4085C0>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000D1384A8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000D17D5F8>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000E3A19E8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000CE99128>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000D0D73C8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000000000EA51F98>]], dtype=object)
'''
【课程3.】 极坐标图 调用subplot()创建子图时通过设置projection='polar',便可创建一个极坐标子图,然后调用plot()在极坐标子图中绘图 '''
# 创建极坐标轴 s = pd.Series(np.arange())
theta=np.arange(,*np.pi,0.02)
print(s.head())
print(theta[:])
# 创建数据 fig = plt.figure(figsize=(,))
ax1 = plt.subplot(, projection = 'polar')
ax2 = plt.subplot()
# 创建极坐标子图
# 还可以写:ax = fig.add_subplot(,polar=True) ax1.plot(theta,theta*,linestyle = '--',lw=)
ax1.plot(s, linestyle = '--', marker = '.',lw=)
ax2.plot(theta,theta*,linestyle = '--',lw=)
ax2.plot(s)
plt.grid()
# 创建极坐标图,参数1为角度(弧度制),参数2为value
# lw → 线宽
输出:
dtype: int32
[ . 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18]
# 极坐标参数设置 theta=np.arange(,*np.pi,0.02)
plt.figure(figsize=(,))
ax1= plt.subplot(, projection='polar')
ax2= plt.subplot(, projection='polar')
ax1.plot(theta,theta/,'--',lw=)
ax2.plot(theta,theta/,'--',lw=)
# 创建极坐标子图ax ax2.set_theta_direction(-)
# set_theta_direction():坐标轴正方向,默认逆时针 ax2.set_thetagrids(np.arange(0.0, 360.0, ),['a','b','c','d'])
ax2.set_rgrids(np.arange(0.2,,0.4))
# set_thetagrids():设置极坐标角度网格线显示及标签 → 网格和标签数量一致
# set_rgrids():设置极径网格线显示,其中参数必须是正数 ax2.set_theta_offset(np.pi/)
# set_theta_offset():设置角度偏移,逆时针,弧度制 ax2.set_rlim(0.2,1.2)
ax2.set_rmax()
ax2.set_rticks(np.arange(0.1, 1.5, 0.2))
# set_rlim():设置显示的极径范围
# set_rmax():设置显示的极径最大值
# set_rticks():设置极径网格线的显示范围
输出:
[<matplotlib.axis.YTick at 0xec59fd0>,
<matplotlib.axis.YTick at 0xec5fc50>,
<matplotlib.axis.YTick at 0xec7dc50>,
<matplotlib.axis.YTick at 0xec813c8>,
<matplotlib.axis.YTick at 0xec81b00>,
<matplotlib.axis.YTick at 0xec76160>,
<matplotlib.axis.YTick at 0xec84a90>]
# 雷达图1 - 极坐标的折线图/填图 - plt.plot() plt.figure(figsize=(,)) ax1= plt.subplot(, projection='polar')
ax1.set_title('radar map\n') # 创建标题
ax1.set_rlim(,) data1 = np.random.randint(,,)
data2 = np.random.randint(,,)
data3 = np.random.randint(,,)
theta=np.arange(,*np.pi,*np.pi/)
# 创建数据 ax1.plot(theta,data1,'.--',label='data1')
ax1.fill(theta,data1,alpha=0.2)
ax1.plot(theta,data2,'.--',label='data2')
ax1.fill(theta,data2,alpha=0.2)
ax1.plot(theta,data3,'.--',label='data3')
ax1.fill(theta,data3,alpha=0.2)
# 绘制雷达线
输出:
# 雷达图2 - 极坐标的折线图/填图 - plt.polar()
# 首尾闭合 labels = np.array(['a','b','c','d','e','f']) # 标签
dataLenth = # 数据长度
data1 = np.random.randint(,,)
data2 = np.random.randint(,,) # 数据 angles = np.linspace(, *np.pi, dataLenth, endpoint=False) # 分割圆周长
data1 = np.concatenate((data1, [data1[]])) # 闭合
data2 = np.concatenate((data2, [data2[]])) # 闭合
angles = np.concatenate((angles, [angles[]])) # 闭合 plt.polar(angles, data1, 'o-', linewidth=) #做极坐标系
plt.fill(angles, data1, alpha=0.25)# 填充
plt.polar(angles, data2, 'o-', linewidth=) #做极坐标系
plt.fill(angles, data2, alpha=0.25)# 填充 plt.thetagrids(angles * /np.pi, labels) # 设置网格、标签
plt.ylim(,) # polar的极值设置为ylim
输出:
# 极轴图 - 极坐标的柱状图 plt.figure(figsize=(,)) ax1= plt.subplot(, projection='polar')
ax1.set_title('radar map\n') # 创建标题
ax1.set_rlim(,) data = np.random.randint(,,)
theta=np.arange(,*np.pi,*np.pi/)
# 创建数据 bar = ax1.bar(theta,data,alpha=0.5)
for r,bar in zip(data, bar):
bar.set_facecolor(plt.cm.jet(r/.)) # 设置颜色
plt.thetagrids(np.arange(0.0, 360.0, ), []) # 设置网格、标签(这里是空标签,则不显示内容)
输出:
'''
【课程3.】 箱型图 箱型图:又称为盒须图、盒式图、盒状图或箱线图,是一种用作显示一组数据分散情况资料的统计图
包含一组数据的:最大值、最小值、中位数、上四分位数(Q3)、下四分位数(Q1)、异常值
① 中位数 → 一组数据平均分成两份,中间的数
② 上四分位数Q1 → 是将序列平均分成四份,计算(n+)/4与(n-)/4两种,一般使用(n+)/
③ 下四分位数Q3 → 是将序列平均分成四份,计算(+n)/*=6.75
④ 内限 → T形的盒须就是内限,最大值区间Q3+.5IQR,最小值区间Q1-.5IQR (IQR=Q3-Q1)
⑤ 外限 → T形的盒须就是内限,最大值区间Q3+3IQR,最小值区间Q1-3IQR (IQR=Q3-Q1)
⑥ 异常值 → 内限之外 - 中度异常,外限之外 - 极度异常 plt.plot.box(),plt.boxplot() '''
# plt.plot.box()绘制 fig,axes = plt.subplots(,,figsize=(,))
df = pd.DataFrame(np.random.rand(, ), 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=[,1.2],
grid = True,
color = color,
ax = axes[])
# color:样式填充 df.plot.box(vert=False,
positions=[, , , , ],
ax = axes[],
grid = True,
color = color)
# vert:是否垂直,默认True
# position:箱型图占位
输出:
# 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(, ), columns=['A', 'B', 'C', 'D', 'E'])
plt.figure(figsize=(,))
# 创建图表、数据 f = df.boxplot(sym = 'o', # 异常点形状,参考marker
vert = True, # 是否垂直
whis = 1.5, # IQR,默认1.,也可以设置区间比如[,],代表强制上下边缘为数据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=) # 箱体边框颜色
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=)
for median in f['medians']:
median.set(color='DarkBlue', linewidth=)
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, 均值的横线,
输出:
{'caps': [<matplotlib.lines.Line2D object at 0x0000000010042CF8>, <matplotlib.lines.Line2D object at 0x0000000010047BE0>, <matplotlib.lines.Line2D object at 0x0000000010057C88>, <matplotlib.lines.Line2D object at 0x000000001005DB70>, <matplotlib.lines.Line2D object at 0x000000001006EC18>, <matplotlib.lines.Line2D object at 0x0000000010074B00>, <matplotlib.lines.Line2D object at 0x0000000010085BA8>, <matplotlib.lines.Line2D object at 0x000000001008BA90>, <matplotlib.lines.Line2D object at 0x00000000104896D8>, <matplotlib.lines.Line2D object at 0x00000000104998D0>], 'whiskers': [<matplotlib.lines.Line2D object at 0x0000000010042198>, <matplotlib.lines.Line2D object at 0x0000000010042B70>, <matplotlib.lines.Line2D object at 0x0000000010057208>, <matplotlib.lines.Line2D object at 0x0000000010057B00>, <matplotlib.lines.Line2D object at 0x000000001006E198>, <matplotlib.lines.Line2D object at 0x000000001006EA90>, <matplotlib.lines.Line2D object at 0x0000000010085128>, <matplotlib.lines.Line2D object at 0x0000000010085A20>, <matplotlib.lines.Line2D object at 0x000000001009B0B8>, <matplotlib.lines.Line2D object at 0x000000001009B9B0>], 'medians': [<matplotlib.lines.Line2D object at 0x0000000010047D68>, <matplotlib.lines.Line2D object at 0x000000001005DCF8>, <matplotlib.lines.Line2D object at 0x0000000010074C88>, <matplotlib.lines.Line2D object at 0x000000001008BC18>, <matplotlib.lines.Line2D object at 0x0000000010497828>], 'fliers': [<matplotlib.lines.Line2D object at 0x000000001004CD30>, <matplotlib.lines.Line2D object at 0x0000000010062CC0>, <matplotlib.lines.Line2D object at 0x000000001007BC50>, <matplotlib.lines.Line2D object at 0x0000000010090BE0>, <matplotlib.lines.Line2D object at 0x00000000100A37B8>], 'means': [<matplotlib.lines.Line2D object at 0x000000001004C5C0>, <matplotlib.lines.Line2D object at 0x0000000010062550>, <matplotlib.lines.Line2D object at 0x000000001007B4E0>, <matplotlib.lines.Line2D object at 0x0000000010090470>, <matplotlib.lines.Line2D object at 0x00000000102CFC18>], 'boxes': [<matplotlib.patches.PathPatch object at 0x00000000104BAB00>, <matplotlib.patches.PathPatch object at 0x0000000010051C50>, <matplotlib.patches.PathPatch object at 0x0000000010069B00>, <matplotlib.patches.PathPatch object at 0x000000001007EA90>, <matplotlib.patches.PathPatch object at 0x0000000010096B00>]}
# 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.head())
df.boxplot(by = 'X')
df.boxplot(column=['Col1','Col2'], by=['X','Y'])
# columns:按照数据的列分子图
# by:按照列分组做箱型图
输出:
Col1 Col2 X Y
0.884439 0.801121 A A
0.802741 0.390957 A B
0.139452 0.805676 A A
0.030047 0.571676 A B
0.654272 0.733307 A A
图表绘制工具--Matplotlib 2的更多相关文章
- 图表绘制工具--Matplotlib 1
''' [课程3.] Matplotlib简介及图表窗口 Matplotlib → 一个python版的matlab绘图接口,以2D为主,支持python.numpy.pandas基本数据结构,运营高 ...
- 【网易微专业】图表绘制工具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 ...
随机推荐
- Java 算法随笔(一)
1. 最大子序列和问题 给定(可能有负数)整数a(1).a(2).……a(n),求 a(1)+a(2)+……+a(j)的最大值. 也就是:在一系列整数中,找出连续的若干个整数,这若干个整数之和最大.有 ...
- C# 在窗口绘制图形(打点、画圆、画线)
需要包含命名空间 using System.Drawing; 画图前需要先创建画板 void Display() { Graphics g = this.CreateGraphics(); //创建画 ...
- 匿名函数lambda python
lambda 的主体是一个表达式,不是一个代码块lambda 只有一行,仅仅能在lambda表达式种封装有限的逻辑进去匿名函数:需要一个函数,而又不想动脑筋去想名字 #普通函数的定义 def f(a, ...
- B-树 分合之道
P.s:在代码里会同时用到向量和B-树的search,insert, remove,具体调用的是哪个结构的函数结合上下文就能看懂. 根据上一篇文章,我们对于这棵树的大致结构已经明了,那该如何有效利用并 ...
- 硬件中断--DEBUG系列
问题描述: 在线调试时,全速运行,程序进入硬件中断,查看堆栈窗口,发现是从A函数进去的.但是A函数应该没有问题的: 再次重复,发现是从B函数进去的,但是B函数之前运行起来也没有问题的,而且没有传入参数 ...
- Ubuntu 16.04上安装并配置Postfix作为只发送SMTP服务器
如果大家已经在使用第三方邮件服务方案发送并收取邮件,则无需运行自己的邮件服务器.然而,如果大家管理一套云服务器,且其中安装的应用需要发送邮件通知,那么运行一套本地只发送SMTP服务器则更为理想. 如何 ...
- 4,Flask 中的 request
每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前后端的交互 基于HTML + Flask 写一 ...
- CodeForces 879D Teams Formation
题意 将一个长度为\(n\)的数组重复\(m\)遍得到一个长度为\(n \times m\)的新序列,然后消掉新序列中连续\(k\)个相同的元素,不断重复这一过程,求最后剩下的序列的长度 分析 首先可 ...
- startActivityForResult 请求码不正确
今天遇到一个坑,就是 startActivityForResult 接收不到正确的请求码. 比如,我startActivityForResult的时候,设置的请求码是4,但是接收到的时候是100032 ...
- Windows Server 2012 R2有哪些存储监控工具
[TechTarget中国原创] 大多数Windows管理员都知道,没有一种单一的方法可以用来监控存储或磁盘错误.虽然市场上有无数的管理工具可供你选择,但由于政策和规程的原因,企业之间的选择不尽相同. ...