python数据可视化工具 ----matplotlib

一、安装matplotlib模块

 pip install matplotlib

二、设置绘图风格

# 1.设置绘图风格
plt.style.use('fivethirtyeight') 
## 参数可以是文件路径 ...\site-packages\matplotlib\mpl-data\stylelib可参考此路径下文件
## 这个文件夹下,都是存放绘图风格文件,必须是“.mplstyle”结尾文件

# 2.查看可选绘图风格
print(plt.style.available) 
#  ['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh', 'classic', 
#  'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark', 
#  'seaborn-dark-palette', 'seaborn-darkgrid', 'seaborn-talk', 'seaborn-ticks', 'fast', 
#  'seaborn-deep', 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 'seaborn-poster', 
#  'seaborn-white', 'seaborn-whitegrid', 'tableau-colorblind10','dark_background']

# 3. linestyle可选项
# '-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'

点击查看【绘图风格】

三、画布

def figure(num=None,  # 如果没有,则自动递增,否则1-N的整数
           figsize=None,  # 默认为rc figure.figsize
           dpi=None,  # 默认为rc figure.dpi
           facecolor=None,  # 默认为rc figure.facecolor
           edgecolor=None,  # 默认为rc figure.edgecolor
           frameon=True,
           FigureClass=Figure,
           clear=False,
           **kwargs
           ):
# num:唯一标识符
# figsize:画布大小,默认 6.4*4.8
# dpi:每英寸的像素个数,默认100个
# facecolor:画布背景颜色
# edgecolor:画布边框颜色

四、折线图

plt.plot(x, y, color='green', marker='o', linestyle='dashed', linewidth=2, markersize=12)
# x: 表示X坐标的列表, len(x) = len(y)
# y: 表示y坐标的列表
# color: 折线的颜色(折线与坐标点)
# marker: 坐标点的样式
# linestyle: # 折线的样式(实现,虚线,....)
# linewidth: 折线的宽度
# markersize: 坐标点的大小(像素)
import matplotlib.pyplot as plt

plt.style.use('classic')
plt.figure()

x = [1, 2, 3]
y = [1, 2, 3]

plt.plot(x, y, color='green', marker='o', linestyle='dashed', linewidth=2, markersize=12)
# 等价与上写法
plt.flot(x, y, 'go--',linewidth=2, markersize=12)

# plt.plot([4, 5, 6]) == plt.plot([0, 1, 2], [1, 2, 3]) x默认使用y的索引

在这里插入图片描述

五、垂直柱状图

bar(x,    #  柱子的横坐标
	height,   # 柱子的高
	width=0.8,  # 柱子的宽
	bottom=None,  # 柱子在y轴的起始值
	tick_label=[]  # 柱子在x下方的标识
	*, 
	align='center',  # 对齐方式
	data=None, 
	**kwargs)
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style({'font.sans-serif': ['simhei', 'Arial']})  # 设置字体样式
country_name_lst= ['中国', '美国', '印度', '俄罗斯']
population_lst = [14, 3.3, 7.8, 1.46]
plt.bar(range(len(population_lst)), population_lst, color='red', tick_label=country_name_lst, bottom=2)
# plt.bar(range(len(population_lst)), population_lst, color=['r', 'g', 'b'], tick_label=country_name_lst,bottom=1)

plt.ylabel("人口(亿)")  # 中文可能乱码,使用seaborn 设置字体样式
plt.xlabel("国家")
plt.show()

在这里插入图片描述

六、水平柱状图

barh(y,     #  柱子的纵坐标
	width,   # 柱子的宽
	height=0.8,  # 柱子的宽
	left=None,   # 每个柱子在x方向的起始坐标
	*, 
	align='center', 
	**kwargs)
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style({'font.sans-serif':['simhei','Arial']})
name_list = ['中国', '美国', '印度', '俄罗斯']
num_list = [14, 3.3, 14.1, 1.46]
plt.barh([1, 2, 3, 4], num_list, color='red', left=[1, 1, 1, 2], 
		 tick_label = name_list)
plt.ylabel("人口(亿)")
plt.ylabel("人口(亿)")
plt.savefig('test2.png', bbox_inches='tight')
plt.show()

在这里插入图片描述

七、饼状图

pie(x, # 当总和大于1时,每元素占总和的百分比;当总和小于1时,元素就是值,切会有空白
    explode=None, # 默认为None,表示每块距离中心点的距离
    labels=None,   # 表示每块标题
    colors=None,   # 表示每块的颜色
    autopct=None,  # 每块中,显示的数字占比
    pctdistance=0.6,  # 每块中,文字距离中心点的距离
    shadow=False,     # 是否添加阴影
    labeldistance=1.1,  # 图例距离圆心的距离
    startangle=0,      # 饼图的起点从x轴逆时针旋转的角度
    radius=1,       # 1 饼图半径长度
    counterclock=True, 
    wedgeprops=None,
    textprops=None, 
    center=(0, 0), 
    frame=False,
    rotatelabels=False, *, 
    normalize=True, 
    data=None)
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style({'font.sans-serif': ['simhei', 'Arial']})
labels = ['大型', '中型', '小型', '微型']  # 定义标签
sizes = [46, 253, 321, 66]              # 每块值
colors = ['red', 'yellowgreen',
          'lightskyblue', 'yellow']     # 每块颜色定义
explode = (0.4, 0, 0, 0.4)               # 将某一块分割出来,值越大分割出的间隙越大
patches, text1, text2 = plt.pie(sizes,
                                explode=explode,
                                labels=labels,
                                colors=colors,
                                labeldistance=1.2,  # 图例距圆心半径倍距离
                                autopct='%3.2f%%',  # 数值保留固定小数位
                                shadow=True,  # 无阴影设置
                                startangle=180,  # 逆时针起始角度设置
                                pctdistance=0.4)  # 数值距圆心半径倍数距离
# x,y轴刻度设置一致,保证饼图为圆形
plt.axis('equal')
plt.legend()
plt.savefig('test2.png', bbox_inches='tight')
plt.show()

在这里插入图片描述

八、散点图

scatter(x, 
		y, 
		s=None, 
		c=None, 
		marker=None, 
		cmap=None, 
		norm=None,
        vmin=None, 
        vmax=None, 
        alpha=None, 
        linewidths=None, 
        *,
        edgecolors=None, 
        plotnonfinite=False, 
        data=None, 
        **kwargs)
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
import seaborn as sns

sns.set_style({'font.sans-serif': ['simhei', 'Arial']})
matplotlib.rcParams['axes.unicode_minus'] = False  # 显示负号
font = {'family': 'Times New Roman',
        'weight': 'normal',
        'size': 15,
        }
data = np.random.randn(30)
plt.scatter(range(30), data, marker="*")
plt.title("plt.scatter()")
plt.savefig('compare.png', bbox_inches='tight')
plt.show()

# plt.plot也可实现散列,linestyle=‘’就可以了
plt.plot(data, marker="*", linestyle="", c='red')

九、设置x,y轴坐标标题

ylabel(ylabel,         # 纵坐标标签
	   fontdict=None,  # 将字体的属性存储在字典,传递给函数
	   labelpad=None,  # 标签距离轴的长度,默认为4.0
	   *, 
	   loc=None, 
	   **kwargs)

xlabel(xlabel,         # 横坐标标签
	   fontdict=None,  # 将字体的属性存储在字典,传递给函数 
	   labelpad=None,  # 标签距离轴的长度,默认为4.0
	   *, 
	   loc=None, 
	   **kwargs)
# “c” or “color”: 字体颜色	
# fontfamily or family:字体属性,set类型
# fontsize or size:字体大小{‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
# fontstyle or style: 字体样式 {‘normal’, ‘italic’, ‘oblique’}
# fontweight or weight:字体粗细, 0-1000其他值
# rotation: 文字的选择角度float or {‘vertical’, ‘horizontal’}   
from matplotlib import pyplot as plt

plt.ylabel('Y坐标')
plt.xlabel('X坐标')

在这里插入图片描述

十、添加注释文字

text(x,  # 横坐标
	 y,  # 纵坐标
	 s,  # 显示的文本内容
	 fontdict=None,  # 将字体的属性存储在字典,传递给函数
	 **kwargs)
# “c” or “color”: 字体颜色	
# fontfamily or family:字体属性,set类型
# fontsize or size:字体大小{‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
# fontstyle or style: 字体样式 {‘normal’, ‘italic’, ‘oblique’}
# fontweight or weight:字体粗细, 0-1000其他值
# rotation: 文字的选择角度float or {‘vertical’, ‘horizontal’}
from matplotlib import pyplot as plt
plt.plot([1], [1], '*')
plt.text(x=1, y=1, s='1-1c', c='red')
plt.show()

在这里插入图片描述

十一、设置标题

title(label,        # 标题内容
	  fontdict=None, 
	  loc=None, 
	  pad=None, 
	  *, 
	  y=None, 
	  **kwargs)
from matplotlib import pyplot as plt
plt.plot([1], [1], '*')
plt.title('zhe-xian-tu')
plt.show()

在这里插入图片描述

十二、添加图例

当在一个图中绘制多种数据时,通过添加图例能更直观的表达每种图形的含义
matplotlib.pyplot.legend()

# 1.显示一组数据
from matplotlib import pyplot as plt
plt.plot([1, 2, 3], label='Inline label', c='red')
plt.legend()
plt.show()

# 2.显示多组数据
from matplotlib import pyplot as plt
plt.plot([0, 1, 2], [1, 2, 3])
plt.plot([4, 5, 6])  # 等同于 plt.plot([0, 1, 2], [4, 5, 6])
plt.legend(['first line', 'second line'])
plt.show()

在这里插入图片描述

十三、绘制多子图

fig = plt.figure(figsize=(10, 10), dpi=100)  # 创建画布
ax1 = plt.subplot(221)  
ax1 = plt.subplot(2,2,1) # 等通用上

# subplot参数解释(2,2,1) == (rows,cols,index)
# rows: 把画布分割为几行
# cols: 把画布分割为几列
# index: 放置的位置索引
# 视图1 布局
from matplotlib import pyplot as plt
import seaborn as sns

sns.set_style({'font.sans-serif': ['simhei', 'Arial']})
fig = plt.figure(figsize=(10, 10), dpi=100)  # 创建画布

ax1 = plt.subplot(221)  # 分割为 2*2(2行2列),放置在第一位置
plt.plot([1, 2, 3, 4], [4, 5, 7, 8], color="r", linestyle="--")

ax2 = plt.subplot(222)  # 分割为 2*2(2行2列),放置在第二位置
plt.plot([1, 2, 3, 5], [4, 5, 7, 8], color="y", linestyle="-")

ax3 = plt.subplot(223)  # 分割为 2*2(2行2列),放置在第三位置
plt.plot([1, 2, 3, 4], [4, 5, 7, 8], marker='*', color="g", linestyle="-.")

ax4 = plt.subplot(224)  # 分割为 2*2(2行2列),放置在第四位置
plt.plot([1, 2, 3, 4], [4, 5, 7, 8], color="b", linestyle=":")

plt.show()

# 视图2 布局
from matplotlib import pyplot as plt
import seaborn as sns

sns.set_style({'font.sans-serif': ['simhei', 'Arial']})
fig = plt.figure(figsize=(10, 10), dpi=100)  # 创建画布

ax1 = plt.subplot(221) # 分割为 2*2(2行2列),放置在第一位置
plt.plot([1, 2, 3, 4], [4, 5, 7, 8], color="r", linestyle="--")

ax2 = plt.subplot(222) # 分割为 2*2(2行2列),放置在第二位置
plt.plot([1, 2, 3, 5], [4, 5, 7, 8], color="y", linestyle="-")

ax4 = plt.subplot(212) # 分割为 2*1(2行1列),放置在第二位置
plt.plot([1, 2, 3, 4], [4, 5, 7, 8], color="b", linestyle=":")

plt.show()

在这里插入图片描述

十四、多个子图添加总标题

pyplot.suptitle(t, **kwargs)
# t:str 标题名称
# x:float,default: 0.5   基本单位为宽度,标题距离左边的宽度
# y:float,default: 0.98  基本单位为,标题到底部不得高度
from matplotlib import pyplot as plt
import seaborn as sns

sns.set_style({'font.sans-serif': ['simhei', 'Arial']})
fig = plt.figure(figsize=(10, 10), dpi=100)  # 创建画布
ax1 = plt.subplot(221)  
plt.plot([1, 2, 3, 4], [4, 5, 7, 8], color="r", linestyle="--")
ax2 = plt.subplot(222) 
plt.plot([1, 2, 3, 5], [4, 5, 7, 8], color="y", linestyle="-")
ax4 = plt.subplot(212)
plt.plot([1, 2, 3, 4], [4, 5, 7, 8], color="b", linestyle=":")

plt.suptitle("视图分割", x=0.4, y=0.05)
plt.show()

在这里插入图片描述

十五、修改默认属性

import matplotlib
# matplotlib.rcParams 默认参数
print(matplotlib.rcParams)

[点击阅读 ] matplotlib默认属性

matplotlib.rcParams['axes.labelpad'] = 20
matplotlib.rcParams['axes.labelcolor'] = 'red'
matplotlib.rcParams['axes.labelsize'] = 15
matplotlib.rcParams['lines.marker'] = '*'
matplotlib.rcParams['lines.markersize'] = 20

十六、设置等距坐标刻度

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from matplotlib.ticker import MultipleLocator
x = [1, 3, 2, 4, 6]
y = [10, 20, 30, 40, 50]

# 设置x轴的刻度大小为1
x_major_locator = MultipleLocator(1)
# 设置y轴的刻度大小为10
y_major_locator = MultipleLocator(10)

ax = plt.gca()

ax.xaxis.set_major_locator(x_major_locator)
ax.yaxis.set_major_locator(y_major_locator)

plt.plot(x, y, color='green', marker='o', linestyle='dashed', linewidth=1, markersize=6)

# 设置x,y轴的范围
plt.ylim(-1, 52)
plt.xlim(0, 7)
plt.show()

在这里插入图片描述

十七、设置多种(不等距)刻度

import matplotlib.pyplot as plt

# 设置多个刻度范围
plt.figure(figsize=(10, 10))
scale = []
x = [1, 21, 23, 25, 60, 70]
y = [10, 20, 30, 40, 50, 60]

# 设置两个刻度范围
scale.extend(range(0, 30, 5))
scale.extend(range(30, 90, 10))
plt.xticks(scale, rotation=70, fontsize=10)

plt.yticks(range(0, 90, 10), fontsize=10)

plt.xlim(0, 80)
plt.ylim(0, 80)

plt.plot(x, y, color='green', marker='o', linestyle='dashed', linewidth=1, markersize=6)
plt.legend(["test"], loc="best")
plt.show()

在这里插入图片描述

十八、保存图片

savefig(fname,      # 文件名/文件路径
		*, 
		dpi='figure',  # 每英寸的像素大小
		format=None, 
		metadata=None,
		bbox_inches=None, 
		pad_inches=0.1,
		facecolor='auto', 
		edgecolor='auto',
		backend=None, 
		**kwargs)
# quality:int, default: rcParams[“savefig.jpeg_quality”] (default: 95) 保存的像素质量,只对’.jpg’ 'jpeg’有效
# bbox_inches:为“tight“时,可以去除保留图片时的空白边缘

十九、水平线与垂直线

plt.axhline(50, linestyle='--', color='green', lw=1, alpha=0.4)
plt.axvline(5, linestyle='--', color='green', alpha=0.4, lw=1)
# lw: 水平线的宽度
# alpha:垂直线的透明度,取0-1之间 
import random
from matplotlib import pyplot as plt

data1 = random.sample(range(100), 10)
data2 = random.sample(range(100), 10)

plt.plot(data1, linestyle='--', c='r')
plt.plot(data2, linestyle=':', c='g')

plt.axhline(50, linestyle='--', color='green', lw=1, alpha=0.4)
plt.axvline(5, linestyle='--', color='green', alpha=0.4, lw=1)
plt.legend(['A', 'B'])
plt.show()

在这里插入图片描述

二十、对比折线图

import random
from matplotlib import pyplot as plt

data1 = random.sample(range(100), 10)
data2 = random.sample(range(100), 10)

plt.plot(data1, linestyle='--', c='r')
plt.plot(data2, linestyle=':', c='g')

plt.axhline(50, linestyle='--', color='green', lw=2)
plt.legend(['A', 'B'])
plt.show()

在这里插入图片描述

二十一、组合柱状图

# 组合柱状图是利用 y轴起始位置
from matplotlib import pyplot as plt

fig, ax1 = plt.subplots(1, 1, figsize=(4, 4))

plt.bar([1, 2], [2, 3], 0.2, 0, align='center')
plt.text(x=1, y=1, s='A', ha="center", va="center")
plt.text(x=2, y=1.5, s='A', ha="center", va="center")

plt.bar([1, 2], [3, 2], 0.2, [2, 3], align='center')
plt.text(x=1, y=3.5, s='B', ha="center", va="center")
plt.text(x=2, y=4, s='B', ha="center", va="center")

plt.xticks([1, 2], ['A', 'B'])
plt.legend(['A', 'B'])

plt.show()

在这里插入图片描述

二十二、设置刻度线

tick_params(axis='both', **kwargs)
axis:显示刻度线的坐标轴:
x:x轴显示刻度线
y:y轴显示刻度线
both:x轴和y轴都显示刻度线
direction: 刻度线位置
in:坐标轴内侧
out:坐标轴外侧
inout:坐标轴内外两侧
length:刻度线的长度
10:整数(表示10个像素长)
from matplotlib import pyplot as plt

plt.plot([1, 2, 3, 4, 5], [2, 3, 4, 5, 6], linestyle='--', c='r')
plt.plot([1, 2, 3, 4, 5], [3, 4, 5, 6, 7], linestyle='-.', c='g')

plt.tick_params('both', direction='inout')

plt.legend(['A', 'B'])

plt.show()

在这里插入图片描述

二十三、添加带有箭头注释文本

annotate(text, xy, *args, **kwargs)
参数解释
text :注释文本
xy :被注释的点位置
xytext :注释文本的位置
arrowprops :注释箭头的属性,接受一个字典
fontsize:字体大小
arrowprops = dict()
facecolor:箭头的颜色
shrink:箭头离注释点的距离要求length < 1
headwidth:箭头占空间的宽
headlength:箭头占空间的长
width:箭头大小的宽
from matplotlib import pyplot as plt
plt.plot([1, 2, 3, 4, 5], [2, 3, 4, 5, 6], linestyle='--', c='r')
plt.plot([1, 2, 3, 4, 5], [3, 4, 5, 6, 7], linestyle='-.', c='g')
plt.tick_params('both', direction='inout')
plt.annotate('var=3',
             xy=(3, 4),
             xytext=(3.2, 3.5),
             arrowprops=dict(facecolor='g',
                             shrink=0.05,
                             headwidth=12,
                             headlength=6,
                             width=4),
             fontsize=12)
plt.legend(['A', 'B'])
plt.show()

在这里插入图片描述

二十四、保存为图片

savefig(*args, **kwargs)
参数
path:可以是文件名(相对路径),也可是文件路径(绝对路径)
from matplotlib import pyplot as plt
plt.plot([1, 2, 3, 4, 5], [2, 3, 4, 5, 6], linestyle='--', c='r')
plt.plot([1, 2, 3, 4, 5], [3, 4, 5, 6, 7], linestyle='-.', c='g')
plt.legend(['A', 'B'])
plt.savefig('test-111.png')

在这里插入图片描述

二十五、获取坐标轴的所有属性

作用:获取坐标轴的所有属性
语法:plt.getp(obj, *args, **kwargs)

参数:
obj:坐标轴对象
from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(0, 2, 100)

fig, ax = plt.subplots()

line1 = ax.plot(x, x, linestyle='--', c='r')
line2 = ax.plot(x, x**2, linestyle='-.', c='g')
line3 = ax.plot(x, x**3, linestyle=':', c='b')
plt.getp(line1)
# line1.set_title('b')
plt.title('b')

plt.show()

在这里插入图片描述

二十六、更改坐标轴属性

作用:修改坐标轴的属性
语法:setp(obj, *args, **kwargs)

参数:
obj:坐标轴对象
from matplotlib import pyplot as plt
import numpy as np
x = np.linspace(0, 2, 100)
fig, ax = plt.subplots()
line1 = ax.plot(x, x, linestyle='--', c='r')
line2 = ax.plot(x, x**2, linestyle='-.', c='g')
line3 = ax.plot(x, x**3, linestyle=':', c='b')
plt.setp(line2)  # 参考下图
plt.setp(line2, "linestyle")
# linestyle: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
plt.title('b')
plt.show()

在这里插入图片描述

from matplotlib import pyplot as plt
import numpy as np
x = np.linspace(0, 2, 100)
fig, ax = plt.subplots()
line1 = ax.plot(x, x, linestyle='--', c='r')
line2 = ax.plot(x, x**2, linestyle='-.', c='g')
line3 = ax.plot(x, x**3, linestyle=':', c='b')
plt.title('b')
plt.setp(line2, linestyle="-.", lw=5, color="red", alpha=0.5) # 参考下图
plt.show()

在这里插入图片描述

二十七、以轮询方式设置叠加折线图

作用:修改坐标轴的属性
语法:set_prop_cycle(self, cycler)

参数:
cycler:周期计对象(1,2,3,1,2,3,…,1,2,3,…)做周期运动器对象
from matplotlib import pyplot as plt
import numpy as np
from cycler import cycler

line_prop_cycler = (cycler(color=list("rgcy")) +
                    cycler(ls=["-", "--", "-.", ":"]) +
                    cycler(lw=[3, 6, 9, 12]))

x = np.linspace(0, 2, 100)

fig, ax = plt.subplots()
ax.set_prop_cycle(line_prop_cycler)  # 周期性使用绘图风格
line1 = ax.plot(x, x)
line2 = ax.plot(x, x ** 2)
line3 = ax.plot(x, x ** 3)
line4 = ax.plot(x, x ** 2+6*x+1)
line5 = ax.plot(x, x ** 2+7*x+1)
line6 = ax.plot(x, x ** 2+8*x+1)

plt.show()

在这里插入图片描述

二十八、设置位图图层顺序

多个位图重叠时,zorder属性值,最大在最上层,最小在最下层
语法:set_prop_cycle(self, cycler)

from matplotlib import pyplot as plt
import numpy as np
from cycler import cycler

line_prop_cycler = (cycler(color=list("rgcy")) +
                    cycler(ls=["-", "--", "-.", ":"]) +
                    cycler(lw=[3, 6, 9, 12]))

x = np.linspace(0, 2, 100)

fig, ax = plt.subplots()
ax.set_prop_cycle(line_prop_cycler)
line1 = ax.plot(x, x, zorder=6)
line2 = ax.plot(x, x ** 2, zorder=5)
line3 = ax.plot(x, x ** 3, zorder=4)
line4 = ax.plot(x, x ** 2+6*x+1, zorder=3)
line5 = ax.plot(x, x ** 2+7*x+1, zorder=2)
line6 = ax.plot(x, x ** 2+8*x+1, zorder=1)

plt.show()

在这里插入图片描述

二十九、标注柱状图

bar_label(container, labels=None, *, fmt='%g', label_type='edge', padding=0, **kwargs)

参数:
container:bar对象
labels:标注柱子的标签
fmt : 格式
label_type :标签类型
padding:离柱子的高度
from matplotlib import pyplot as plt

b = plt.bar([1, 2, 3, 4, 5, 6], [4, 2, 7, 5, 9, 8])
plt.bar_label(b, padding=1)
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值