5-matplotlib画图

tags: python,数据分析,matplotlib,pyplot,pandas,numpy,Series,DataFrame

一、Matplotlib基础知识

1.1. Matplotlib基本图表包括的元素

  • x轴和y轴:水平和垂直的轴线
  • 两轴刻度:刻度标示坐标轴的分隔,包括最小刻度和最大刻度
  • 两轴刻度标签:表示特定坐标轴的值
  • 绘图区域:实际绘图的区域

pandas 绘图,使用方便;matplotlib专门绘图工具,样式更加丰富。

1.2. 只含单一曲线的图

n = np.array(np.random.randint(0,10, size=10))
plt.plot(np.arange(10), n)

plt.plot中,x轴的数据不是必须的,不传x轴数据,会自动使用y轴数据的索引作为x轴数据。
plt.plot只能画线型图,它没有类似pandas中直接传入参数kind值为bar, hist, scatter等以改变图像类型的方法。

1.3. 包含多个曲线的图

1.3.1. 使用多个plot函数

n = np.array(np.random.randint(0,10, size=10))
plt.plot(np.arange(10), n)
plt.plot(n,n)

上面的代码中调用了两次plot函数,此时会在一个图中显示两条曲线。

如果在代码中使用了plt.show()函数,则其会使得该代码前面的图像先显示出来,如果后面还有代码要显示图像,则会在另一张图像中显示。

1.3.2. 在一个plot函数中传入多对X,Y值

n = np.array(np.random.randint(0,10, size=10))
plt.plot(np.arange(10), n, n, n)

使用这种方法,plot函数中的x和y不能省略,必须成对出现。使用上面的代码,能达到和1.3.1中同样的效果。

1.4. 网格线

在绘制图像的代码plot函数前后,加上代码plt.grid(),则会在所画的图像中显示网格线。
在网格函数中还可以传如以下参数:

  1. lw
  2. ls
  3. alpha
  4. color
  5. axis

1.4.1. lw

代表linewidth,即线的粗细,例如lw=3代表线宽为3

1.4.2. ls

代表linestyle,即网格线的类型。
可以选择的参数有:'-', '--', '-.', ':',分别对应的类型为:实线,虚线,点划线,点虚线。

1.4.3. alpha

表示线的明暗程度,取值范围0~1

1.4.4. color

代表线颜色,可以使用以下参数

  1. Html十六进制字符串,如color = '#eeefff'
  2. 归一化到[0, 1]RGB元组,如color = (0.3, 0.3, 0.4)
  3. 合法的HTML颜色名,如color = 'red',或者选取下面列表中的数据:
颜色别名HTML颜色名颜色别名HTML颜色名
蓝色bblue绿色ggreen
红色rred黄色yyellow
青色ccyan黑色kblack
洋红色mmagenta白色wwhite

1.4.5. axis

代表需要显示哪个轴方向的线,可以为:'x''y',如果不写默认为都有。

1.4.6. 代码效果

x = np.linspace(0,2*np.pi,1000)
y = np.sin(x)
plt.plot(x,y)
plt.grid(color = '#0000ff',lw=3,alpha=1,ls=':', axis='x')

在这里插入图片描述

1.5. 创建子图

使用axes = plt.subplot(n1, n2, n3)的方式创建子图,参数n1, n2, n3表示,子图有n1行,n2列,当前操作的是第n3个图(索引值,左上角为1,逐渐增加,一直到右下角)。需要注意的是所有的数字不能超过10 #E91E63
该函数方法返回值为matplotlib.axes类型,需要画子图时,先获取该返回值,然后对该值使用如之前介绍的plot方法进行画图。

在子图创建代码plt.subplot()中传入title参数时,可以设置各个子图的标题,也可是使用axes的对象方法,如set_title()

示例代码:

# 注意图片大小是英寸
x = np.linspace(-20,20,1000)
plt.figure(figsize=(3*5,5))
axes1 = plt.subplot(1,3,1)
axes1.plot(x,np.sin(x))
axes1.grid(lw=2)

axes2 = plt.subplot(1,3,2)
axes2.plot(x,np.cos(x))
axes2.grid(c='r',alpha=0.6)

axes3 = plt.subplot(1,3,3)
axes3.plot(x,np.power(x,2))
axes3.grid(ls='--',c='g')

在这里插入图片描述

1.6. 坐标轴界限

1.6.1. plt.axis()方法

如果axis方法没有任何参数,则返回当前坐标轴的上下限axis(xmin =,ymax = )
可以使用plt.axis([-1,1, -1,1])的方式进行设置两个轴的上下限,
也可以使用plt.axis(xmin=-1, xmax=3)单独设置某个轴的上下限。

x = np.linspace(-1,1, 100)
y = (1 - x**2) ** 0.5
plt.plot(x, y, x, -y)
# 设置坐标轴界限
plt.axis([-2,1, -1,1])
# 显示当前坐标轴的界限
plt.axis()

在这里插入图片描述

1.6.2. plt.axis('xxx')方法

直接指定图像的显示风格,上面的'xxx'可以为:'tight'、'off'、'equal'、'scaled'
具体显示效果见下:

plt.figure(figsize=(3*6,2*5))
x = np.linspace(-1,1, 100)
y = (1 - x**2) ** 0.5
# 默认是tight, 紧凑的分割
axes1 = plt.subplot(2,3,1)
axes1.plot(x, y, x, -y)

axes2 = plt.subplot(2,3,2)
axes2.plot(x, y, x, -y)
# 取消坐标轴
axes2.axis('off')

axes3 = plt.subplot(2,3,3)
axes3.plot(x, y, x, -y)
axes3.axis('equal')

axes4 = plt.subplot(2,3,4)
axes4.plot(x, y, x, -y)
axes4.axis('scaled')

axes5 = plt.subplot(2,3,5)
axes5.plot(x, y, x, -y)
axes5.axis('scaled')
axes5.axis('off')

在这里插入图片描述

1.6.3. .xlim()方法和.ylim()方法

x = np.linspace(-1,1, 100)
y = (1 - x**2) ** 0.5
plt.plot(x, y, x, -y)
plt.xlim(xmin=-2, xmax=2)
plt.ylim(-2,2)

在这里插入图片描述

1.7. 坐标轴标签

.xlabel()方法和.ylabel()方法

x = np.linspace(-1,1, 100)
y = (1 - x**2) ** 0.5
plt.plot(x, y, x, -y)
plt.axis('equal')
# 设置x轴、y轴的标签
plt.xlabel('X', fontdict=dict(fontsize=20))
plt.ylabel('y=(1-x^2)^0.5', rotation=0, position=(0,1))

在这里插入图片描述

方法中第一个参数为标签,后面可以传入fontdict来设置字体大小。另外可以设置旋转角度rotation,以及位置参数position
其中如果设置标签的位置时,其中的参数为相对位置,坐标轴的原点为0,终点为1,如果设置x轴的位置,则位置参数中的第二个数字不起作用,同样设置y轴时,第一个标签不起作用。

另外如果要显示中文,需要在代码开始处,加上下面的代码:

plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif'] = ['SimHei']

1.8. 图像标题

x = np.linspace(-1,1,100)
y = (1-x**2)**0.5
plt.plot(x,y,x,-y)
plt.axis('equal')
plt.title('circle',fontdict=dict(fontsize=20,color='g'),position=(1,1))

在这里插入图片描述

1.9. 图例

1.9.1. 不对图例的位置风格等参数进行修改

在画多个系列的曲线图到一张图像上时,可以生成图例,来区分不同的系列。
可以给图例中的每个系列起名,即在使用plt.plot()代码时,传入参数label值,则该系列的图例名称即为label对应的字符串值。(注意图例的名称不能以下划线开头。)
给定值之后,需要最后调用plt.legend()函数来显示出图例。
示例代码如下:

# 推荐写法
x = np.linspace(0,10,  10)
# 图例名称不要以下划线开头
plt.plot(x, 0.5 * x, label='slow')
plt.plot(x, x, label='normal')
plt.plot(x,  2*  x, label='fast')
# 自动的寻找一个 最好的位置best()来放置图裂
plt.legend()

图例显示

1.9.2. 修改图例的参数

对于上面的代码,如果在plt.legend()中不传入任何参数,则系统会选择最佳的位置来展示图例,并且自动选择图例中系列名称的堆叠方式。

可以在函数plt.legend()中传入参数loc来指定图例的位置。loc的值为元组,使用相对位置,同样原点处为(0,0),右下角为(1,0),左上为(0,1),右上为(1,1),中心为(0.5,0.5)。同样图例可以放在图像外面,比如放在图像上面,即loc=(0,1.04)

另外,可以修改图例中系列的堆叠方式,比如上面图片中的1列,可以修改为2列或者3列,操作为在函数plt.legend()中传入参数ncol,比如ncol=3为显示为3列。

x = np.linspace(0,10,  10)
plt.plot(x, 0.5 * x, label='slow')
plt.plot(x, x, label='normal')
plt.plot(x,  2 * x, label='fast')
plt.legend(loc=(0,1.03), ncol=3, borderaxespad=0, mode='expand')

在这里插入图片描述

1.10. 保存图片

figure.savefig(filename,[dpi=],[facecolor=])的选项

  • filename
    含有文件路径的字符串或Python的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf推断出PDF,.png推断出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)
  • dpi
    图像分辨率(每英寸点数),默认为100
  • facecolor
    图像的背景色,默认为“w”(白色)
figure = plt.figure()
x = np.linspace(0,10,  10)
plt.plot(x, 0.5 * x, label='slow')
plt.plot(x, x, label='normal')
plt.plot(x,  2 * x, label='fast')
plt.legend(loc=(0,1.03), ncol=3, borderaxespad=0, mode='expand')
figure.savefig('./legend.jpg',dpi=500,facecolor='g')

执行上面的代码之后,就会把1.9.2中的图片保存在代码运行的目录下,并且dpi为500,并且背景为绿色。

二、设置plot图片的风格和样式

plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为:
plt.plot(X, Y, 'format', ...)

2.1. 点和线的样式

2.1.1. 颜色

  1. 使用别名
    • color='r'

下表为颜色别名对应的颜色名称

颜色别名HTML颜色名颜色别名HTML颜色名
蓝色bblue绿色ggreen
红色rred黄色yyellow
青色ccyan黑色kblack
洋红色mmagenta白色wwhite
  1. 合法的HTML颜色名

    • color = 'red'
  2. HTML十六进制字符串

    • color = '#eeefff'
  3. 归一化到[0, 1]RGB元组

    • color = (0.3, 0.3, 0.4)

2.1.2. 透明度

修改画图参数中的alpha参数,范围为[0,1]

x = np.linspace(-1, 1, 100)
y = (1 - x **2) **0.5
# 透明度是从0到1之间
plt.plot(x, y, x, -y, c='r', alpha=0.5)
plt.axis('equal')

2.1.3. 设置背景色

通过plt.subplot()方法传入facecolor参数,来设置坐标轴的背景色。
而在plt.figure()方法传入facecolor参数,来设置图片的背景色。

figure = plt.figure(facecolor='g')
x = np.linspace(-1, 1, 100)
y = (1 - x **2) **0.5
plt.subplot(facecolor='r')
plt.plot(x, y, x, -y, c='k', alpha=0.5)
plt.axis('equal')

背景色

2.1.4. 设置线型

使用参数linestylels,具体取值见下:

线条风格描述线条风格描述
'-'实线':'虚线
'--'破折线'steps'阶梯线
'-.'点划线'None'什么都不画

2.1.4. 设置线宽

使用linewidthlw参数,

x = np.linspace(-1, 1, 100)
y = (1 - x **2) **0.5
plt.plot(x, y, x, -y, c='k',lw=4.9)
plt.axis('equal')

线宽

2.1.5. 设置点参数

使用marker参数进行控制点的类型,具体取值见下:

标记描述标记描述
'1'一角朝下的三脚架'3'一角朝左的三脚架
'2'一角朝上的三脚架'4'一角朝右的三脚架
's'正方形'p'五边形
'h'六边形1'H'六边形2
'8'八边形
'.''x'X
'*'星号'+'加号
','像素
'o'圆圈'D'菱形
'd'小菱形'','None',' ',None
'_'水平线'|'垂直线
'v'一角朝下的三角形'<'一角朝左的三角形
'^'一角朝上的三角形'>'一角朝右的三角形

点的一些其他颜色的设置

参数描述参数描述
markeredgecolor点边缘的颜色markeredgewidth点边缘的宽度
markerfacecolor点内部的颜色markersize点的大小

2.1.6. 多参数连用

plt.plot()函数中,可以将颜色、点型、线型使用字符串的方式一起传入进来,三者的顺序可以变化。

x = np.linspace(0, 10, 10)
plt.plot(x, '--ro', lw=2, markersize=18, markeredgecolor='g', markeredgewidth=6, markerfacecolor='c')

显示效果
多个曲线不同设置:

# 为对个曲线设置不同的属性,使用位置参数
x = np.linspace(0, 2*np.pi ,10)
y = np.sin(x)
plt.plot(x,y, 'r--d',
         x, x, 'g-o')

在这里插入图片描述

2.2. X、Y轴坐标刻度

使用plt.xticks()plt.yticks()方法,向其中传入列表参数,列表中每个字符串就是要显示在对应轴上的结果。同样也可以设置标度的大小,使用fontsize参数。
示例如下:

x = np.linspace(0, 2*np.pi ,100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x,y1,'r--',x,y2,'g:',lw=3)
# 传刻度和刻度的标签
plt.xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi], ['0',  '$\pi/2$', '$\\theta$', '$3\pi/2$', '2$\pi$'], fontsize=20)
plt.yticks(fontsize=20)

在这里插入图片描述

在标度字符中,可以传入希腊字母的单词,用$\$包裹,则可以显示对应的字母,如果有的字母对应的单词第一个字母和\连用为特殊显示,则需要再使用一个\将其转义,如'$\\beta$'

三、2D图形

3.1. 直方图

使用代码plt.hist()画直方图。使用方法和pandas中的直方图类似。

直方图的参数只有一个x!!!不像条形图需要传入x,y。

plt.hist()的参数:

  • bins
    可以是一个bin数量的整数值,也可以是表示bin的一个序列。默认值为10
  • density
    如果值为True,直方图的值将进行归一化处理,形成概率密度,默认值为False
  • color
    指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色
  • orientation
    通过设置orientationhorizontal创建水平直方图。默认值为vertical
n = np.random.randint(0, 10,size=10)
# 直方图颜色不能 简写
_ = plt.hist(n, bins=50, density=True, color='r', orientation='horizontal')

在这里插入图片描述

3.2. 条形图

条形图必须传入x值和y值。
条形图有两种,一种是垂直条形图,使用plt.bar()创建;另一种是水平条形图,使用plt.barh()创建。
示例代码:

n = np.random.randint(0, 10,size=10)

plt.figure(figsize=(2*8,5))
axes1 = plt.subplot(121,title='plt.bar()')
# 必须传x,y,不能 省
axes1.bar(np.arange(0,10), n, width=0.5, color='r' )
axes2 = plt.subplot(122,title='plt.barh()')
axes2.barh(np.arange(0,10), n, height=0.8, color='c' )

在这里插入图片描述

3.3. 饼图

3.3.1. 未占满饼图和占满饼图

饼图只有一个参数x。
饼图类似与直方图,其展示的是个部分占总体的比例,条形图适合比较各部分的大小。

如果饼图中传如的x值为小数,且总和不超过1时,饼图会默认传入的参数为已经算好的比例值,其会生成未占满的饼图,示例如下

# 传递比例就会严格按照传递的比例来显示饼状图
n = [0.1, 0.3, 0.5]
plt.pie(n)

在这里插入图片描述

而如果x数据总和超过1时,其则会自动计算各部分的比例,然后安装比例进行画图,示例如下:

n = [0.2, 0.3, 0.5, 1]
plt.pie(n)

在这里插入图片描述

3.3.2. 饼图的显示属性设置

labels参数设置每一块的标签,需要传入列表参数对每一块进行指定。
labeldistance参数设置标签距离圆心的距离(其值为比例值,即小数)
autopct参数设置比例值的显示格式'%.2f%%'(其中的.2f%意思为显示小数后两位,并以%的形式显示)。
pctdistance参数设置比例值文字距离圆心的距离
explode参数设置每一块顶点距圆形的长度(比例值),其值为列表。
colors参数设置每一块的颜色
shadow参数为布尔值,设置是否绘制阴影
startangle设置旋转角度

示例如下:

plt.figure(figsize=(8,8))
n = [0.1, 0.2, 0.4, 0.3]
_ = plt.pie(n, autopct='%.2f%%', explode=[0.1, 0.2, 0.3, 0.4], shadow=True, labels=list('ABCD'), labeldistance=0.6, pctdistance=1.1,
            colors=['r','g',  'b', 'm'], startangle=60, textprops=dict(size=20))

在这里插入图片描述

3.4. 散点图

散点图需要两个参数x,y。使用plt.scatter()
示例:

x = np.random.randn(1000)
y = np.random.randn(1000)
plt.figure(figsize=((10,8)))
plt.scatter(x,y, marker='d', s=np.random.randint(0,150, 1000), color=np.random.rand(1000,4))
plt.axis("off")

在这里插入图片描述

3.5. 玫瑰图

其可以看作为直方图在极坐标下的一种情况。

例:当前有某城市的风向情况,具体数据在r_data中,该数据中为各个风的风向角度,需要用玫瑰图将该城市的风向分布绘制出来。

r_data = np.array([ 10.    ,  20.    ,  40.    ,  90.    ,  87.    ,  79.    ,
        70.    ,  80.    ,  90.    ,  90.    , 105.    , 100.    ,
       110.    , 116.504 , 145.001 , 145.001 , 145.001 , 155.503 ,
       155.503 , 155.503 , 190.    , 126.501 , 250.    ,  99.0009,
       330.003 ,  20.    ,  70.    ,  70.    ,  10.    ,  80.    ,
       126.    , 100.    , 135.    , 130.    , 160.    , 130.501 ,
       190.    , 180.    , 193.502 , 193.502 , 224.004 , 224.004 ,
       224.004 , 180.    , 190.    , 254.001 , 257.503 , 190.    ,
       159.5   , 100.    ,  80.    ,  90.    ,  80.    ,  80.    ,
        90.    ,  90.    ,  90.    ,  97.    ,  89.    ,  88.0147,
       107.004 , 107.004 , 132.503 , 132.503 , 132.503 , 251.    ])
data, data_range = np.histogram(r_data, range=[0,360], bins=8)

在这里插入图片描述

思路:使用直方图中的函数np.histogram(r_data, range=[0,360], bins=8),首先将风向范围设定为[0.360],分成8个部分显示,该函数会返回一个元组,其中 第一个数据为在分好的范围内出现的次数,第二个为分好的范围。

但是玫瑰图中的极坐标使用的是弧度值,而上面划分好的范围值data_range为角度制数据,而且数据data长度为8,而data_range长度为9,因为最后360和0重合了。所以需要将生成弧度制范围,使用代码r_range = np.arange(0,2*np.pi,np.pi/4)

详细代码:

r_data = np.array([ 10.    ,  20.    ,  40.    ,  90.    ,  87.    ,  79.    ,
        70.    ,  80.    ,  90.    ,  90.    , 105.    , 100.    ,
       110.    , 116.504 , 145.001 , 145.001 , 145.001 , 155.503 ,
       155.503 , 155.503 , 190.    , 126.501 , 250.    ,  99.0009,
       330.003 ,  20.    ,  70.    ,  70.    ,  10.    ,  80.    ,
       126.    , 100.    , 135.    , 130.    , 160.    , 130.501 ,
       190.    , 180.    , 193.502 , 193.502 , 224.004 , 224.004 ,
       224.004 , 180.    , 190.    , 254.001 , 257.503 , 190.    ,
       159.5   , 100.    ,  80.    ,  90.    ,  80.    ,  80.    ,
        90.    ,  90.    ,  90.    ,  97.    ,  89.    ,  88.0147,
       107.004 , 107.004 , 132.503 , 132.503 , 132.503 , 251.    ])
data, data_range= np.histogram(r_data, range=[0,360], bins=8)
r_range = np.arange(0,2*np.pi,np.pi/4)
plt.figure(figsize=(8,8))
plt.subplot(projection='polar')
plt.bar(r_range, data,  color=np.random.rand(8,3), width=np.pi/4)

在这里插入图片描述

四、图形内的文字、注释、箭头

4.1. 文字

Pyplot函数API方法描述
text()mpl.axes.Axes.text()Axes对象的任意位置添加文字
xlabel()mpl.axes.Axes.set_xlabel()为X轴添加标签
ylabel()mpl.axes.Axes.set_ylabel()为Y轴添加标签
title()mpl.axes.Axes.set_title()Axes对象添加标题
legend()mpl.axes.Axes.legend()Axes对象添加图例
figtext()mpl.figure.Figure.text()Figure对象的任意位置添加文字
suptitle()mpl.figure.Figure.suptitle()Figure对象添加中心化的标题
annnotate()mpl.axes.Axes.annotate()Axes对象添加注释(箭头可选)

所有的方法会返回一个matplotlib.text.Text对象
示例代码:

x = np.linspace(0, 7, 100)
y = np.sin(x)
# plt.subplot(facecolor='g')
plt.figure(facecolor='g')
plt.plot(x,y)
# text在坐标系内添加文本说明
plt.text(0+0.1,0, 'sin(0)=0')
# figtext使用相对坐标
plt.figtext(0.5, 0.5, 'sin($\pi$)=0')

在这里插入图片描述

注意:plt.text()使用绝对坐标设置其要显示的文本位置,而plt.figtext()使用相对坐标来设置其位置。

4.2. 注释和设置其中的箭头

使用代码

plt.annotate(s, (x,y), (xtext,ytext),
			arrowprops=dict(width,headwidth,headlength,facecolor,shrink),)

进行设置。
xy参数设置箭头指示的位置,xytext参数设置注释文字的位置

arrowprops参数以字典的形式设置箭头的样式,其中的参数如下:
width参数设置箭头长方形部分的宽度,
headlength参数设置箭头尖端的长度,
headwidth参数设置箭头尖端底部的宽度,
facecolor设置箭头颜色
shrink参数设置箭头顶点、尾部与指示点、注释文字的距离(比例值)

另外可以直接在arrowprops参数字典中设置arrowstyle值,来选择箭头的样式,
可选择的值有'-', '->', '-[', '<-', '<->', 'fancy', 'simple', 'wedge'

示例如下:

n = [14, 11, 14,13,14,10, 30, 12, 11, 14, 13, 13, 12, 13]
plt.plot(n)
plt.ylim(ymax=35)
plt.annotate('This spot must really\n mean something',(6,30), (8,32), arrowprops=dict(width=20, headwidth=25, headlength=20, facecolor='k', shrink=0.1))

在这里插入图片描述

五、3D曲面图

首先需要导入画3d图所需要的模块
from mpl_toolkits.mplot3d.axes3d import Axes3D
画图的时候,需要先使用X,Y = np.meshgrid(x,y)将xy两轴数据网格化,并获取网格化后的值。
然后将网格化后的值传入曲面图的方程中,以计算z轴的值。
使用.plot_surface()的方式画出曲面图。
示例代码如下:

x, y = np.linspace(0, 7, 100), np.linspace(0,7, 100)
X,  Y= np.meshgrid(x,y)
# 三维图形的方程
Z = np.sin(X) + np.cos(Y) + 2

plt.figure(figsize=(2*8,6))
axes1 = plt.subplot(1,2,1, projection='3d')
axes1.plot_surface(X, Y, Z)

axes2 = plt.subplot(1,2,2, projection='3d')
axes2 = axes2.plot_surface(X, Y, Z, cmap='rainbow')
# shrink长宽一起缩放
plt.colorbar(axes2, shrink=0.5)

在这里插入图片描述

.plot_surface()方法中传入图像的样式,可以对图片显示进行改变。使用plt.colorbar()可以在图像旁显示以颜色作为区分大小值的标尺。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值