数据可视化

pip install matplotlib

一、各种图

#线形图
import numpy as np
import pandas as pd
df1=pd.DataFrame(data=np.random.randn(1000,4),
                index=pd.date_range(start='10/10/2023',periods=1000),
                columns=list('ABCD'))
df1.cumsum().plot()

在这里插入图片描述

#2、条形图
df2=pd.DataFrame(data=np.random.rand(10,4),
                columns=list('ABCD'))
df2

在这里插入图片描述

df2.plot.bar(stacked=True)#stacked表示堆叠

在这里插入图片描述

#3、饼图,百分比,自动计算
df3=pd.DataFrame(data=np.random.rand(4,2),
                index=list('ABCD'),
                columns=['One','Two'])
df3.plot.pie(subplots=True,figsize=(8,8),colors=np.random.random(size=(4,3)))#figsize尺寸,subplots表示>=两个图,colors可以不写

在这里插入图片描述

#散点图
df4=pd.DataFrame(np.random.rand(50,4),columns=list('ABCD'))
df4.plot.scatter(x='A',y='B')#A和B关系绘制
# #在一张图中绘制AC散点图,同时绘制BD散点图
# ax=df4.plot.scatter(x='A',y='C',color='DarkBlue',label='Group 1');
# df4.plot.scatter(x='B',y='D',color='DarkGreen',label='Group 2',ax=ax)
# #气泡图,散点有大小之分
# df4.plot.scatter(x='A',y='B',s=df4['C']*200)

在这里插入图片描述

df4['F']=df4['C'].map(lambda x : x+np.random.randint(0,5,size=1)[0])
df4

在这里插入图片描述

df4.plot.scatter(x='C',y='F')

在这里插入图片描述

#5、面积图
df5=pd.DataFrame(data=np.random.rand(10,4),
                columns=list('ABCD'))
df5.plot.area(stacked=True);#是否堆叠,是

在这里插入图片描述

二、Matplotlib基础

2.1 图形绘制

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,2*np.pi,100)
y=np.sin(x)#正弦波,x:Numpy数组。所有的数据,进行正弦计算
plt.plot(x,y)
plt.xlim(-1,10)
plt.ylim(-1.5,1.5)
plt.grid(color='green',alpha=0.5,linestyle='--',linewidth=1)

在这里插入图片描述

2.2 坐标轴刻度、标签、标题

列表生成式,本机字体查找

from matplotlib import font_manager
fm=font_manager.FontManager()
[font.name for font in fm.ttflist]#列表生成式,本机字体查找
plt.figure(figsize=(9,6))#图的尺寸
plt.plot(x,y)
plt.rcParams['font.family']='KaiTi'#设置字体,不显示负号
plt.rcParams['font.size']=28
plt.rcParams['axes.unicode_minus']=False#可显示数字的负号
plt.title('正弦波',fontsize=28,color='red',pad=20)#pad间距
plt.xlabel('X')
plt.ylabel('f(x)=sin(x)',rotation=0,horizontalalignment='right')#rotation设置标签为水平,horizontalalignment='right'标签右对齐
a=plt.yticks([-1,0,1])#调整刻度
_=plt.xticks([0,np.pi/2,np.pi,1.5*np.pi,2*np.pi],
            [0,r'$\frac{\pi}{2}$',r'$\pi$',r'$\frac{3\pi}{2}$',r'$2\pi$'],
            color='red')

在这里插入图片描述

2.3 图例

import numpy as np
import matplotlib.pyplot as plt
#1、图形绘制
x=np.linspace(0,2*np.pi)#x轴
#y轴
y=np.sin(x)
#绘制线形图
#调整尺寸
plt.figure(figsize=(9,6))
plt.plot(x,y)
#2、图例
plt.plot(x,np.cos(x))#余弦波
plt.legend(['Sin','Cos'],fontsize=18,loc='center',ncol=2,
           bbox_to_anchor=[0,1.05,1,0.2])#x,y,width,height,左下角(0,0),右上角(1,1)

在这里插入图片描述

2.4 脊柱移动(坐标轴的移动)

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-np.pi,np.pi,50)
plt.rcParams['axes.unicode_minus']=False
plt.figure(figsize=(9,6))
#plot绘制两个图形,x-y成对出现,可以!!!
plt.plot(x,np.sin(x),x,np.cos(x))
ax=plt.gca()#获取当前视图
# ax.set_facecolor('green')#全图底色变绿
#右边和上面脊柱消失
# ax.spines['right'].set_color('white')
# ax.spines['top'].set_color('#FFFFFF')
ax.spines['right'].set_alpha(0)#效果和上面两行一样
ax.spines['top'].set_alpha(0)
# #设置下面左边脊柱位置,data表示数据,axes表示相对位置0~1
ax.spines['bottom'].set_position(('data',0))#下面的线放在竖直中间
ax.spines['left'].set_position(('data',0))#左边的线放在水平中间
plt.yticks([-1,0,1],labels=['-1','0','1'],fontsize=18)
_=plt.xticks([-np.pi,-np.pi/2,np.pi/2,np.pi],
            labels=[r'$-\pi$',r'$-\frac{\pi}{2}$',r'$\frac{\pi}{2}$',r'$\pi$'],
                    fontsize=18)
# plt.grid()#网格线
plt.savefig('./1.png')#图片保存,dpi=300高清,jpg,pdf都可以存

在这里插入图片描述

三、风格样式

3.1 颜色、线形、点形、线宽、透明度

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,2*np.pi,20)#等差数列,20个
y1=np.sin(x)
y2=np.cos(x)
# 设置颜色、线型、点型
plt.plot(x,y1,color='indigo',ls='-.',marker='p')#maker代表特定形状,p五边形
plt.plot(x,y2,color='#FF00EE',ls='--',marker='o')#圆,虚线

plt.plot(x,y1+y2,color=(0.2,0.7,0.2),ls=':',marker='*')
plt.plot(x,y1+2*y2,linewidth=3,alpha=0.7,color='orange')#线宽,透明度0.7
plt.plot(x,2*y1-y2,'bo--')#参加连用

在这里插入图片描述

3.2 更多属性设置

import numpy as np
import pandas as pd
def f(x):
    return np.exp(-x)*np.cos(2*np.pi*x)
x=np.linspace(0,5,50)
plt.figure(figsize=(9,6))

#plot参数
plt.plot(x,f(x),color='purple',
        marker='o',#点样式
        ls='--',#线样式
        lw=2,#线宽
        alpha=0.6,#透明度
        markerfacecolor='red',#点颜色
        markersize=10,#点大小
        markeredgecolor='green',#点边缘色
        markeredgewidth=3)#点边缘宽度

plt.xticks(size=18)#设置刻度大小
_=plt.yticks(size=18)

在这里插入图片描述

四、多图布局

4.1 子视图

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,2*np.pi)
plt.figure(figsize=(9,6))

# 创建子视图*np
#2行,1列,1第一个图
ax=plt.subplot(2,1,1)
ax.plot(x,np.sin(x))

在这里插入图片描述

fig,axes=plt.subplots(2,2)#四个图
#索引,0开始
axes[0,0].plot(x,np.sin(x),color='red')
axes[0,1].plot(x,np.sin(x),color='green')
axes[1,0].plot(x,np.cos(x),color='purple')
axes[1,1].plot(x,np.cos(x))

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-np.pi,np.pi,20)#20个marker
y=np.sin(x)
#子视图1
plt.figure(figsize=(9,6))
ax=plt.subplot(221)#两行两列第一个子视图,可以写一起,可以逗号隔开
ax.plot(x,y,color='red')
ax.set_facecolor('green')#调用子视图设置方法,设置子视图整体属性
#子视图2
ax=plt.subplot(2,2,2)#两行两列第二个子视图
line,=ax.plot(x,-y)#返回绘制对象,#列表中只有一个数据,可加逗号直接取出,相当于返回line,再取line[0]
line.set_marker('*')#调用对象设置方法,设置属性
line.set_markerfacecolor('red')
line.set_markeredgecolor('green')
line.set_markersize(10)
#子视图3
ax=plt.subplot(2,1,2)#两行一列第二个子视图
plt.sca(ax)#设置当前视图
x=np.linspace(-np.pi,np.pi,200)
plt.plot(x,np.sin(x*x),color='red')

在这里插入图片描述

4.2 嵌套

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-np.pi,np.pi,25)
y=np.sin(x)
fig=plt.figure(figsize=(9,6))#创建视图
plt.plot(x,y)
#嵌套方式一,axes轴域(横纵坐标范围),子视图
ax=plt.axes([0.2,0.55,0.3,0.3])#参数含义[left,bottom,width,height]
ax.plot(x,y,color='g')
#嵌套方式二
ax=fig.add_axes([0.55,0.2,0.3,0.3])#使用视图对象添加子视图
ax.plot(x,y,color='r')

在这里插入图片描述

五、多图布局

5.1 双轴显示

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-np.pi,np.pi,50)
y=np.sin(x)
plt.plot(x,y,color='blue')
_=plt.yticks(np.linspace(-1,1,11),color='blue')
ax=plt.gca()#获取当前视图
#twinx 也有twiny,前者更常用
ax2=ax.twinx()#双胞胎,两个x轴,合到一起的,两个x轴,对应着两个y轴,如果没有这个,因为有第10行,左边刻度极其压缩
#其中一个视图,纵坐标范围:-1~1.0
#另一个视图,范围0~25
#刻度会自适应
y2=np.exp(x)#自然底数e的幂函数
plt.plot(x,y2,color='red')#默认向ax2这个子视图中绘制
plt.yticks(np.arange(0,26,5),color='red')

在这里插入图片描述

六 文本、注释、箭头

6.1、文本

import numpy as np
import matplotlib.pyplot as plt
#字体属性
font={'fontsize':20,
     'family':'Kaiti',
     'color':'red',
     'weight':'bold'}#字体加粗
x=np.linspace(0.0,5.0,100)
y=np.cos(2*np.pi*x)*np.exp(-x)
plt.figure(figsize=(9,6))
plt.plot(x,y,'k')#k黑色
plt.title('exponential decay',fontdict=font,pad=20)#视图的标题,pad边距,小标题
plt.suptitle('指数衰减',y=1.05,fontdict=font,fontsize=30)#超级标题,figure的大标题
plt.text(x=2,y=0.65,#横纵坐标位置
        s=r'$\cos(2\pi t) \exp(-t)$',fontdict=font)#文本内容
plt.xlabel('time(s)')
plt.ylabel('voltage(mV)')
# plt.show()

在这里插入图片描述

6.2、注释

import numpy as np
import matplotlib.pyplot as plt
fig,ax=plt.subplots()
x=np.arange(0.0,5.0,0.01)#间隔0.01
y=np.cos(2*np.pi*x)
line,=ax.plot(x,y,lw=2)
# plt.rcParams['font.family']='STKaiti'#中文文本,不显示负号
plt.rcParams['axes.unicode_minus']=False#可显示数字的负号
plt.rcParams['font.size']=20
ax.annotate('local max',#文本内容
            xy=(2,1),#箭头指向位置
            xytext=(3,1.5),#文本位置
            arrowprops=dict(facecolor='black',shrink=0.05))#箭头属性
ax.annotate('local min',#文本内容
            xy=(2.5,-1),#箭头指向位置
            xytext=(4,-1.8),#文本位置
            arrowprops=dict(facecolor='black',
                            width=2,#箭头宽度
                            headwidth=10,#箭头头部宽度
                            headlength=10,#箭头头部长度
                            shrink=0.1))#箭头两端收缩的百分比,总长
ax.annotate('median',#文本内容
            xy=(2.25,0),#箭头指向位置
            xytext=(0.5,-1.8),#文本位置
            arrowprops=dict(arrowstyle='-|>'),#箭头样式
            fontsize=20)
ax.set_ylim(-2,2)#y轴范围调宽

在这里插入图片描述

七 常用视图

7.1 折线图

import numpy as np
import matplotlib.pyplot as plt
x=np.random.randint(0,10,size=15)
#一图多线
plt.figure(figsize=(9,6))
plt.plot(x,marker='*',color='r')
plt.plot(x.cumsum(),marker='o')
#多图布局
fig,axs=plt.subplots(2,1)
#设置宽高
fig.set_figwidth(9)
fig.set_figheight(6)
axs[0].plot(x,marker='*',color='red')
axs[1].plot(x.cumsum(),marker='o')

在这里插入图片描述

7.2 柱状图

import numpy as np
import matplotlib.pyplot as plt
labels = ['G1','G2','G3','G4','G5','G6']#级别,横坐标
men_means=np.random.randint(20,35,size=6)
women_means=np.random.randint(20,35,size=6)
men_std=np.random.randint(1,7,size=6)
women_std=np.random.randint(1,7,size=6)
width=0.35
plt.bar(labels,#横坐标
       men_means,#柱高
       width,#线宽
       yerr=men_std,#误差条,图中黑色的竖条
       label='Men')#标签
plt.bar(labels,women_means,width,yerr=women_std,
        bottom=men_means,#条形图,绘制时,落上去
       label='Women')
plt.ylabel('Scores')
plt.title('Scores by group and gender')
plt.legend()

在这里插入图片描述

7.3 箭头

import matplotlib.pyplot as plt
import numpy as np
loc=np.random.randint(0,10,size=(10,2))

plt.figure(figsize=(10,10))
plt.plot(loc[:,0],loc[:,1],'gh',ms=20)#ms表示大小
plt.grid(True)
#路径
way=np.arange(10)#0、1、2.。。。。9 索引
np.random.shuffle(way)#洗牌,打乱顺序
for i in range(0,len(way)-1):#for循环遍历,少一个,因为最后一个不需要连,10个点,9条线
    start =loc[way[i]]#起点
    end=loc[way[i+1]]#终点
    plt.arrow(x=start[0],y=start[1],#箭头起点
              dx=end[0]-start[0],dy=end[1]-start[1],#坐标移动位置
              head_width=0.2,lw=2,#head_width箭头长度,lw箭尾线宽
              length_includes_head=True)#长度计算包含箭头箭尾
    plt.text(start[0],start[1],s=i,fontsize=18,color='red')#文本
    if i==len(way)-2:#最后一个点
        plt.text(end[0],end[1],s=i+1,fontsize=18,color='red')
        start =loc[way[-1]]#最后一个点,最后一个和第一个相连
        end=loc[way[0]]#起点,对应着0点
        
        plt.arrow(x=start[0],y=start[1],#箭头起点
              dx=end[0]-start[0],dy=end[1]-start[1],#坐标移动位置
              head_width=0.2,lw=2,#head_width箭头长度,lw箭尾线宽
              length_includes_head=True,color='red')#长度计算包含箭头箭尾

在这里插入图片描述

八 柱状图带文本

import numpy as np
import matplotlib.pyplot as plt
boy=np.random.randint(20,35,size=6)
girl=np.random.randint(20,35,size=6)
labels=['G1','G2','G3','G4','G5','G6']
plt.figure(figsize=(9,6))
x=np.arange(6)

width=0.3
plt.bar(x-width/2,boy,width=width)
plt.bar(x+width/2,girl,width=width)
plt.legend(['Boy','Girl'])
plt.xticks(x,labels,fontsize=20)
# 放置文本 text
for i in range(6):
    s1=boy[i]
    plt.text(x=i-0.15,y=s1+1,s=s1,ha='center')
    s2=girl[i]
    plt.text(x=i+0.15,y=s2+1,s=s2,ha='center')
plt.ylim(0,40)

在这里插入图片描述

九 极坐标图

9.1 线性极坐标图

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0,4*np.pi,200)
y=np.linspace(0,2,200)

ax=plt.subplot(111,projection='polar',facecolor='lightgreen')#极坐标projection='polar'
ax.plot(x,y)
#设置
ax.set_rmax(3)
ax.set_rticks([0.5,1,1.5,2])
ax.grid(True)#网格线

在这里插入图片描述

9.2 条形极坐标图

import numpy as np
import matplotlib.pyplot as plt
N=8#分成8份
x=np.linspace(0.0,2*np.pi,N,endpoint=False)

#纵坐标
y=np.random.randint(3,15,size=N)

#宽度,扇形宽度,8份占满一个圆
width=np.pi/4
#颜色,0到1
colors=np.random.rand(8,3)#随机生成颜色
#创建极坐标
ax=plt.subplot(111,projection='polar')#polar表示极坐标
#绘制条形图
ax.bar(x,y,width=width,color=colors)

在这里插入图片描述

十 直方图

import numpy as np
import matplotlib.pyplot as plt

mu=100#平均值
sigma=15#标准差
#10000个数据
x=np.random.normal(loc=mu,scale=15,size=10000)
fig,ax=plt.subplots()
#描述统计性的数据
#数据量比较大,通过绘制直方图,看出数据内部关系
#density=False 统计数字在某个范围内的次数
#density=True 统计数字在某个范围内的概率
#n 出现的次数、bins 柱子横坐标、 
n,bins,patches=ax.hist(x,200,density=True)#直方图(也是条形图组成),分成200份

在这里插入图片描述

十一 箱型图

import numpy as np
import matplotlib.pyplot as plt
data=np.random.normal(size=(500,4))#正态分布

labels=['A','B','C','D']
#用Matplotlib画箱型图
#黄色的线是中位数
# 查看数据分布情况,看异常值
_=plt.boxplot(data,1,'ro',labels=labels)#红色的圆点是异常值

在这里插入图片描述

十二 散点图

import numpy as np
import matplotlib.pyplot as plt
data=np.random.randn(100,2)
s=np.random.randint(100,300,size=100)
color=np.random.randn(100)

plt.scatter(data[:,0],#横坐标
            data[:,1],#纵坐标
            s=s,#尺寸
            alpha=0.5)#透明度

在这里插入图片描述

十三 饼图

import numpy as np
import matplotlib.pyplot as plt
#解决中文字体乱码的问题
plt.rcParams['font.sans-serif']='Kaiti'

labels=['五星','四星','三星','二星','一星']#标签
percent=[95,261,105,30,9]#某市星级酒店数量

#设置图片大小和分辨率
fig=plt.figure(figsize=(5,5),dpi=150)

#偏移中心量,突出某一部分
explode=(0,0.1,0,0,0)#想移动哪个,对应labels修改数据即可,0.1表示自身高度的10%

#绘制饼图:autopct显示百分比,这里保留一位小数;shadow控制是否显示阴影
_=plt.pie(x=percent,#数据
       explode=explode,#偏移中心量
       labels=labels,#显示标签
       autopct='%0.1f%%',#显示百分比
       shadow=True)#阴影,3D效果

在这里插入图片描述

十四 热力图

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
#标签
vegetables=['cucumber','tomato','lettuce','asparagus','potato','wheat','barley']
farmers=list('ABCDEFG')
#创造数据,随机数
harvest=np.random.rand(7,7)*5#农民丰收数据,rand正,randn有正有负
plt.rcParams['font.size']=18
plt.rcParams['font.weight']='heavy'

plt.figure(figsize=(9,9))
#imshow,显示图片
im=plt.imshow(harvest)#harvest为随机数,所以颜色也各不相同,可加参数改变颜色cmap=''
#绘制文本
for i in range(len(vegetables)):
    for j in range(len(farmers)):
        text =plt.text(j,i,round(harvest[i,j],1),
                      ha='center',va='center',color='r')

在这里插入图片描述

plt.colormaps()#颜色

十五 蜘蛛图

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family']='Kaiti'
labels=np.array(['个人能力','IQ','服务意识','团队精神','解决问题能力','持续学习'])
y=[83,61,95,67,76,88]
#画图数据准备,角度、状态值
x=np.linspace(0,2*np.pi,len(labels),endpoint=False)
x=np.concatenate((x,[x[0]]))#首尾相连,增加了一个x,后面去掉
y=np.concatenate((y,[y[0]]))
#用Matplotlib画蜘蛛图
fig=plt.figure(figsize=(6,6))
ax=fig.add_subplot(111,polar=True)
ax.plot(x,y,'ro-',linewidth=2,markersize=10)#连线,o顶点形状,-表示实线,r红色,markersize点大小
ax.fill(x,y,alpha=0.2)#填充颜色
#x=3.14--->180
#标签显示,去掉一个,切片
_=ax.set_thetagrids(x[:-1]*180/np.pi,labels,fontsize=18)

在这里插入图片描述

x=np.linspace(0,2*np.pi,len(labels),endpoint=False)
x

结果 array([0. , 1.04719755, 2.0943951 , 3.14159265, 4.1887902 ,
5.23598776])

十六 3D图形

16.1 线形图&散点图

import numpy as np
import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d.axes3d import Axes3D
x=np.linspace(0,60,300)
y=np.sin(x)
z=np.cos(x)
# fig=plt.figure(figsize=(9,6))#二维
# a3=Axes3D(fig)#二维变成三维
# a3.plot(x,y,z)
plt.rcParams['axes.unicode_minus']=False#可显示数字的负号
plt.figure(figsize=(9,6))
a3=plt.subplot(111,projection='3d')
a3.plot(x,y,z)#普通线形图
a3.set_xlabel('X')
a3.set_ylabel('Y')
a3.set_zlabel('Z')
#散点图
x=np.random.randint(0,60,size=20)
y=np.random.randn(20)
z=np.random.randn(20)
a3.scatter(x,y,z,color='red')#散点图
#调整视图的角度
a3.view_init(elev=20,azim=-30)

在这里插入图片描述

16.2 3D条形图

import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
from mpl_toolkits.mplot3d.axes3d import Axes3D
month=np.arange(1,5)
#每个月4周 每周都会产生数据
#三个维度:月、周、销量

fig=plt.figure(figsize=(9,6))
ax3=Axes3D(fig)
for m in month:
    #每个月都要绘制条形图
    ax3.bar(np.arange(1,5),#四周1,2,3,4,理解为横坐标
           np.random.randint(1,10,size=4),#理解为纵坐标
           zs=m, #蓝色放一月,橙色放二月等等
           zdir='x',#在哪个方向上,一排排排列
           alpha=0.7,#alpha透明度
           width=0.5)
    
ax3.set_xlabel('月份',fontsize=18,color='red')
ax3.set_xticks(month)
ax3.set_ylabel('周',fontsize=18,color='red')
ax3.set_yticks([1,2,3,4])
ax3.set_zlabel('销量',fontsize=18,color='green')

在这里插入图片描述

十七 seaborn

pip install seaborn

17.1 快速入手

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
#style:darkgrid(黑色网格,默认)、whitegrid(白色网格)、dark(黑色背景)、white、ticks(四周有刻度线的白背景)
sns.set(style='dark',context='paper',font='Kaiti')#设置样式,contex:paper、notebook(默认)、talk、poster(越来越粗)
plt.rcParams['axes.unicode_minus']=False#可显示数字的负号
plt.figure(figsize=(9,6))

x=np.linspace(0,2*np.pi,20)
y=np.sin(x)
#lineplot方法
sns.lineplot(x=x,y=y,color='green',ls='--')
sns.lineplot(x=x,y=np.cos(x),color='red',ls='--')

在这里插入图片描述

17.2 线形图

在这里插入图片描述
fmri.csv中数据:
在这里插入图片描述
在这里插入图片描述
style=‘event’:根据event属性分类,指定样式,自动分配实线、虚线
hue=‘event’:根据event属性分类,绘制
palette=‘deep’:画板,颜色

在这里插入图片描述

17.3 热力图

在这里插入图片描述
原flights.csv中数据:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值