matplotlib 基本统计图形

matplotlib基本统计图形构造一个静态图

目录

matplotlib

基本统计图形

构造一个静态图

交互类型的图

LateX表达式:

设置点线面的样式

图形:

柱形图:

条形图:

直方图:

3D图:

饼图:

环形图:

旭日图:

散布图:

气泡:

雷达图:

热图:

股票OHLC:

K线图:


绘制线型图,添加注释,添加轴标签

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import scipy.stats as stats
import warnings
warnings.filterwarnings("ignore")
​
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (10,6.18)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
​
#数据部分
x = np.linspace(-10,10,200)
#pdf概率密度函数
y = stats.norm.pdf(x)/np.max(stats.norm.pdf(x))
---#绘制线性图,label:标签
plt.plot(x,y,label="PDF")
plt.fill_between(x,y,alpha=.3)
​
​
#增加一条线
#cdf概率增长趋势
y1 = stats.norm.cdf(x)
plt.plot(x,y1,label="CDF")
​
---#添加注释,rotation转动方向
plt.text(x=-1.6,y=0.6,s="PDF",rotation=73,color="#00FFFF",alpha=.7,fontsize=20)
plt.text(x=0,y=0.4,s="CDF",rotation=73)
​
---#轴的标签
plt.xlabel("这是X轴",color='orange',fontsize=20)
plt.ylabel("$f(x) = wx + b$",color='orange',fontsize=20,rotation=110)
​
​
#刻度轴
plt.xticks(np.arange(-11,11))
plt.xticks(np.arange(-1,1))
​
#开启图例
plt.legend()
​
#保存图片
# plt.savefig('./imgs/demo.png',dpi=100)

 

交互类型的图

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import scipy.stats as stats
import warnings
warnings.filterwarnings("ignore")
​
%matplotlib notebook
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (6,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
#设置数据
#画个圆
X = np.linspace(-1,1,1000)
y = (1-X**2)**.5
​
plt.plot(X,y)
plt.plot(X,-y)
# plt.axis("equal")

 

LateX表达式:

映射坐标:

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import scipy.stats as stats
import warnings
warnings.filterwarnings("ignore")
%matplotlib inline
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (12,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
​
X = np.linspace(-np.pi,np.pi,100)
y1 = np.sin(X)
y2 = np.cos(X)
​
plt.plot(X,y1,label='sin')
plt.plot(X,y2,label='cos')
​
#调整图形后续内容,映射横坐标:
pi = np.pi
ticks = [-pi,-pi/2,0,pi/2,pi]
labels = ['$-\pi$','$-\pi/2$','zero','$\pi/2$','$\pi$']
---#改变行列坐标名,ticks可以映射
plt.xticks(ticks,labels,color="orange",fontsize=20,rotation=90)
​
​
plt.yticks([-1,0,1],["min","0","max"])
​
#plt.legend(labels=['a','b'])
plt.text(0,0.5,"$\Pi$")
plt.legend()

 

设置点线面的样式

修改图像样式

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import scipy.stats as stats
import warnings
warnings.filterwarnings("ignore")
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("seaborn")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (12,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
X = np.linspace(-np.pi,np.pi,40)
y1 = np.sin(X)
y2 = np.cos(X)
y3 = y1+y2
y4 = y1-y2
​
#marker形状  s正方 d菱形 D大菱形  o圆形 X叉 
#markersize 大小
#color = c  
plt.plot(X,y1,label='sin',linestyle="-",linewidth=2,marker='X',markersize=20,c='pink')
# plt.plot(X,y2,label='cos',ls="--",lw=5)
# plt.plot(X,y3,label='cs',ls=":",lw=3)
# plt.plot(X,y4,label='cs',ls="-.",lw=1)
​
pi = np.pi
ticks = [-pi,-pi/2,0,pi/2,pi]
labels = ['$-\pi$','$-\pi/2$','zero','$\pi/2$','$\pi$']
#ticks可以映射
plt.xticks(ticks,labels,color="orange",fontsize=20,rotation=90)
​
plt.yticks([-1,0,1],["min","0","max"])
​
#plt.legend(labels=['a','b'])
plt.text(0,0.5,"$\Pi$")   #对图像进行设计
plt.legend()

 

图形:

柱形图:

条形图加注释,两条柱形进行对比,对X轴进行修改,标题添加

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
warnings.filterwarnings("ignore")
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (12,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
#linspace
#销量时间
X = pd.Series(pd.date_range("20200101",periods=12))
#销量y1是鞋子
y1 = np.random.randint(10,100,12)
#袜子y2
y2 = np.random.randint(10,100,12)
​
plt.bar(range(len(X)),y1,width=0.2,label="鞋子")         #bar代表柱形图
plt.bar(np.arange(len(X))+0.2,y2,width=0.2,label="袜子")
​
#对X轴进行修改
a=plt.xticks(range(len(X)),X.astype(str).map(lambda x:x.split(" ")[0]),rotation=45)
​
---#添加注释
for x,y in zip(range(len(X)),y1):
    plt.text(x-0.1,y-3,s=y,color="w")  #plt.text代表注释
    
for x,y in zip(range(len(X)),y2):
    plt.text(x+0.1,y-3,s=y,color="w")
    
plt.legend()
​
plt.title("2020年鞋袜销量图",color="r",fontsize=20)     #plt.title标题呈现

条形图:

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
warnings.filterwarnings("ignore")
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (12,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
#linspace
#销量时间
X = pd.Series(pd.date_range("20200101",periods=12))
#销量y1是鞋子
y1 = np.random.randint(10,100,12)
#袜子y2
y2 = np.random.randint(10,100,12)
​
plt.barh(range(len(X)),y1)      #plt.barh代表条形图

直方图:

%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (12,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
# X = np.random.randint(0,10,20)
#文字统计 词云  
X =pd.Series(["a","a","b","a","c","d","c",'a'])
​
plt.hist(X,bins=20)   #plt.hist代表直方图,用作统计个数。

 

3D图:

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
from mpl_toolkits.mplot3d import axes3d
warnings.filterwarnings("ignore")
​
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (12,12)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
#先创建3D画布
# ax3d = plt.subplot(projection = "3d")
​
fig = plt.figure()
ax3d = fig.add_subplot(111,projection='3d')
​
x = np.linspace(-10,10,100)
y = np.arange(0,100)
#网格交互 100*100 = 10000
#xx.shape=100*100
xx,yy = np.meshgrid(x,y)
zz = np.exp(-(xx))
​
​
#超平面 二向箔
ax3d.plot_surface(xx,yy,zz,cmap="rainbow")
​
ax3d.view_init(elev=0,azim=90)
#用户分析的分组显示
#
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
# 创建3d图形的两种方式
# ax = Axes3D(fig)
ax = fig.add_subplot(111, projection='3d')
# X, Y value
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)    # x-y 平面的网格
R = np.sqrt(X ** 2 + Y ** 2)
# height value
Z = np.sin(R)
# rstride:行之间的跨度  cstride:列之间的跨度
# rcount:设置间隔个数,默认50个,ccount:列的间隔个数  不能与上面两个参数同时出现
#vmax和vmin  颜色的最大值和最小值
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
# zdir : 'z' | 'x' | 'y' 表示把等高线图投射到哪个面
# offset : 表示等高线图投射到指定页面的某个刻度
ax.contourf(X,Y,Z,zdir='z',offset=-2)
# 设置图像z轴的显示范围,x、y轴设置方式相同
ax.set_zlim(-2,2)
plt.show()
​

 

饼图:

  • 多个扇形图组成

  • 呈现比例的

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
import seaborn as sns
warnings.filterwarnings("ignore")
​
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (6,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
#生成数据
'''
x:数据
labels:每个扇形的标签
autopct:"比例的表现形式"
explode:飞离效果
修改的内容:x,labels依据现实的情况进行修改,排序选着好序号
'''
x = np.array([125,54,31,49,4.8,7,31.5,5.6,80,6])
labels = ["河南","安徽","山西","江西","北京","上海","浙江","天津","山东","海南"]
#人数第二多的省份飞离效果
e = np.argsort(x)[::-1][1] #选着飞离排名第几的数据
#飞离效果要使用一组数据,不飞离数据标记为0,飞离标记为0.1
ex = np.zeros(shape=len(x)) #[0,0,0,0]
ex[e] = 0.1
# a=plt.pie(x,labels=labels,explode=ex,autopct="%.2f%%")
​
​
#数据重叠
#使用调色板
a=plt.pie(x,labels=labels,explode=ex,colors=sns.color_palette(palette="hls",n_colors=len(x)))
#没有百分比值
v = x / x.sum()
#把v和labels进行拼接 ["河南:31.31%"]
​
'''
loc : 确定图例显示文职
ncol: 显示成几列
'''
plt.legend(labels=[k+':'+"%.2f"%(v*100)+"%" for k,v in zip(labels,v)],loc=[0,1],ncol=2)

 

环形图:

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
import seaborn as sns
warnings.filterwarnings("ignore")
​
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (6,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
#生成数据
'''
x:数据
labels:每个扇形的标签
autopct:"比例的表现形式"
explode:飞离效果
'''
x = np.array([125,54,31,49,4.8,7,31.5,5.6,80,6])
labels = ["河南","安徽","山西","江西","北京","上海","浙江","天津","山东","海南"]
# a=plt.pie(x,labels=labels,explode=ex,autopct="%.2f%%")
​
​
#数据重叠
#使用调色板
a=plt.pie(x,
          labels=labels,
          colors=sns.color_palette(palette="hls",n_colors=len(x)),
          wedgeprops={"width":0.4},
          textprops={"fontsize":10,'color':'k'},
          autopct="%.2f%%",
          pctdistance=0.78
         )
         
#没有百分比值
v = x / x.sum()
#把v和labels进行拼接 ["河南:31.31%"]
​
'''
loc : 确定图例显示文职
ncol: 显示成几列
'''
plt.legend(labels=[k+':'+"%.2f"%(v*100)+"%" for k,v in zip(labels,v)],loc=[0,1],ncol=2)

 

 

旭日图:

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
import seaborn as sns
warnings.filterwarnings("ignore")
​
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (6,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
#生成数据
'''
x:数据
labels:每个扇形的标签
autopct:"比例的表现形式"
explode:飞离效果
'''
data1 = pd.read_excel("./data/data2.xls",sheet_name=0)
data2 = pd.read_excel("./data/data2.xls",sheet_name=1)
​
x1 = data1.省
y1 = data1.销量
​
x2 = data2.省
y2 = data2.销量
​
#数据重叠
#使用调色板
#radius 控制半径
a=plt.pie(y1,
          labels=x1,
          radius=1,
          colors=sns.color_palette(palette="hls",n_colors=len(y1)),
          wedgeprops={"width":0.4},
          textprops={"fontsize":10,'color':'k'},
          autopct="%.2f%%",
          pctdistance=0.78
         )
         
b=plt.pie(y2,
          labels=x2,
          radius=.4,
          colors=sns.color_palette(palette="hls",n_colors=len(y2)),
          textprops={"fontsize":6,'color':'k'},
          autopct="%.2f%%",
          pctdistance=0.78
         )

 

散布图:

  • 看人员分布情况

  • 查看数据和数据之间的关系

    • 身高 体重

    • 线性相关

    • 幂次相关

    • 不相关

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
import seaborn as sns
warnings.filterwarnings("ignore")
​
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (6,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
X = np.random.randint(0,100,100)
y = np.random.randint(0,100,100)
plt.scatter(X,y)

 

气泡:

  • 不同的事物使用不同的颜色

  • 不同的数值使用不同的大小

    import matplotlib.pyplot as plt #画图模块
    import matplotlib.style as style #风格
    import numpy as np
    import pandas as pd
    import scipy.stats as stats
    import warnings
    import seaborn as sns
    warnings.filterwarnings("ignore")
    ​
    %matplotlib inline
    ​
    #inline 嵌入静态图
    #配置图形
    #1.风格配置
    style.use("fivethirtyeight")
    #2.配置画布的尺寸
    plt.rcParams["figure.figsize"] = (6,6)
    #3.清晰度
    plt.rcParams["figure.dpi"] = 100
    #4.设置识别中文
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    #rcParams['font.sans-serif'] = ['MicroSoft YaHei']
    #5.当plt识别中文以后,对于数字的负号就不识别
    plt.rcParams["axes.unicode_minus"] = False
    ​
    #可以用来描绘分类
    #好人和坏人
    #犯罪的严重程度   道德沦丧指数
    #10                10
    #3                 8
    X = pd.DataFrame(np.random.randint(0,11,(50,2)),columns=["犯罪的严重程度","道德沦丧指数"])
    X["标签"] = X.apply(lambda x:"坏" if (x["犯罪的严重程度"]>3 and x["道德沦丧指数"]>=8) else "好",axis=1)
    ​
    ​
    #给每个点设置大小
    #scatter->c->class
    #scatter->c不识别str类别
    ​
    ​
    ​
    ​
    size = X["犯罪的严重程度"]+X["道德沦丧指数"]
    alpha = ((size-size.min())/(size.max()-size.min()) * (1-0.01) + 0.01)
    ​
    # #先把数据中的好人和坏人做一个选择
    # for v in X["标签"].unique():
    #     color_ = None
    #     if v=="坏":
    #         color_="red"
    #     else:
    #         color_="blue"
    #     data = X.query(f"标签=='{v}'") #坏人的数据
    #     data["犯罪的严重程度"]+data["道德沦丧指数"]
        
    #     for i in data.index:
            
    #         s=(data.loc[i]["犯罪的严重程度"]+data.loc[i]["道德沦丧指数"])
    #         plt.plot(data.loc[i]["犯罪的严重程度"],data.loc[i]["道德沦丧指数"],
    #                  marker='o',markersize=s,lw=0,color=color_,alpha=alpha[i])
    ​
    for v in range(X.shape[0]):
        color_ = None
        if X.iloc[v]["标签"]=="坏":
            color_="red"
        else:
            color_="blue"
        s = (X.iloc[v]["犯罪的严重程度"] + X.iloc[v]["道德沦丧指数"])*10
        plt.scatter(X.iloc[v]["犯罪的严重程度"],X.iloc[v]["道德沦丧指数"],s=s,alpha=alpha[v],color=color_)

     

雷达图:

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
import seaborn as sns
warnings.filterwarnings("ignore")
​
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (6,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
#生存  治疗  输出  经济  承受伤害  参团率 
#极图
#修改labels和data的数量和值,达到想要的效果
ax=plt.subplot(projection="polar")
labels = "生存-治疗-输出-经济-承受伤害-参团率".split("-")
#钟无艳
data = [8,2,9,7,9,5]
data = np.concatenate([data,[data[0]]])
labels = np.concatenate([labels,[labels[0]]])
#生成角度
angles = np.linspace(0,np.pi*2,len(data))
​
#雷达图实际上是线性图
ax.plot(angles,data)
ax.fill_between(angles,data,alpha=.3)
​
#导入标签
ax.set_thetagrids(angles*180/np.pi,labels=labels)

 

热图:

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
import seaborn as sns
warnings.filterwarnings("ignore")
​
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (12,10)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
data = pd.read_excel("./data/10-20年双色球数据.xlsx").iloc[:,1:]
​
s = data["中奖号码"].str.split(" ",expand=True)
​
#热图是数据的计数图形
#当前分组规则不一致,指定某个Series进行分组
​
con = []
for i in range(len(s.columns)):
    con.append(data.groupby(s[i]).size())
​
​
#把Series合并成df
data = pd.concat(con,axis=1).fillna(0).astype(int)
​
sns.heatmap(data,annot=True,fmt='d',cmap="summer",lw=1)
​
#电商的用户兴趣爱好

 

 

股票OHLC:

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
import seaborn as sns
warnings.filterwarnings("ignore")
​
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (12,10)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
data = pd.read_excel("./data/茅台股份.xlsx")
data = data.loc[:,["日期","开盘","最高","最低","收盘"]]
#把日期作为行索引
data.set_index("日期",inplace=True)
​
data.iloc[:150].plot()

 

K线图:

pip install mpl_finance

import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import matplotlib.dates as dates
import numpy as np
import pandas as pd
import scipy.stats as stats
import warnings
import seaborn as sns
import mpl_finance as mf
warnings.filterwarnings("ignore")
​
%matplotlib inline
​
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (28,10)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
​
#mpl_finance有自己的数据类型, zip(T,O,H,L,C)
data = pd.read_excel("./data/茅台股份.xlsx")
data = data.loc[:,["日期","开盘","最高","最低","收盘"]].iloc[:150]
date_ = dates.date2num(data.日期)
#把日期作为行索引
quotes = zip(date_,data.开盘,data.最高,data.最低,data.收盘)
​
#mpl_finance不生成画布,需要自己手动设定
ax = plt.subplot()
a = mf.candlestick_ohlc(ax,quotes,colorup='r',colordown='g',width=6)
​
ax.xaxis_date()

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值