1.matplotlib.pyplot简介

matplotlib.pyplot是一个有命令风格的函数集合,它看起来和MATLAB很相似。每一个pyplot函数都使一副图像做出些许改变,例如创建一幅图,在图中创建一个绘图区域,在绘图区域中添加一条线等等。在matplotlib.pyplot中,各种状态通过函数调用保存起来,以便于可以随时跟踪像当前图像和绘图区域这样的东西。绘图函数是直接作用于当前axes(matplotlib中的专有名词,图形中组成部分,不是数学中的坐标系。)

2.热力图

查看数据表中多个特征两两的相似度

2.1 函数接口

import seaborn as sns

seaborn.heatmap(data, vmin=None, vmax=None,cmap=None, center=None, robust=False, annot=None, fmt=’.2g’, annot_kws=None,linewidths=0, linecolor=’white’, cbar=True, cbar_kws=None, cbar_ax=None,square=False, xticklabels=’auto’, yticklabels=’auto’, mask=None, ax=None,**kwargs)

2.1.1 输入数据

data: 矩阵数据集,可以是numpy的数组(array),也可以是pandas的DataFrame。如果是DataFrame,则df的index(行标)/column(列标)信息会分别对应到heatmap的columns和rows,即pt.index是热力图的行标,pt.columns是热力图的列标

2.1.2 热力图矩阵块颜色设置

vmin\vmax: 热力图的颜色取值最大和最小范围,默认是根据data数据表里的取值确定

cmap: 从数字到色彩空间的映射,取值是matplotlib包里的colormap名称或颜色对象,或者表示颜色的列表;改参数默认值:根据center参数设定

center: 数据表取值有差异时,设置热力图的色彩中心对齐值;通过设置center值,可以调整生成的图像颜色的整体深浅;设置center数据时,如果有数据溢出,则手动设置的vmax、vmin会自动改变

robust: 默认取值False;如果是False,且没设定vmin和vmax的值,热力图的颜色映射范围根据具有鲁棒性的分位数设定,而不是用极值设定

2.1.3 矩阵块注释参数

annot: 矩阵块是(True)否(False)写入数据。如果是矩阵,在热力图每个方格写入该矩阵对应位置数据

fmt: 字符串格式代码,矩阵上标识数字的数据格式,比如保留小数点后几位数字

annot_kws: 默认取值False;如果是True,设置热力图矩阵上数字的大小颜色字体,matplotlib包text类下的字体设置

2.1.4 矩阵块间隔与间隔线

linewidths:定义热力图里“表示两两特征关系的矩阵小块”之间的间隔大小(块之间的间隔)

linecolor:切分热力图上每个矩阵小块的线的颜色,默认值是’white’(切分矩阵块的线的颜色)

2.1.5 侧边颜色刻度条设置

cbar: True.矩阵侧边绘制颜色刻度条

cbar_kws: 侧边颜色刻度条字号,字体,颜色等的设置

cbar_ax: 侧边颜色条位置设置

2.1.6 其他设置

square: 设置热力图矩阵小块形状,默认值是False

xticklabels, yticklabels: xticklabels控制每列标签名的输出;yticklabels控制每行标签名的输出。默认值是auto。如果是True,则以DataFrame的列名作为标签名。如果是False,则不添加行标签名。如果是列表,则标签名改为列表中给的内容。如果是整数K,则在图上每隔K个标签进行一次标注。 如果是auto,则自动选择标签的标注间距,将标签名不重叠的部分(或全部)输出

mask: 控制某个矩阵块是否显示出来。默认值是None。如果是布尔型的DataFrame,则将DataFrame里True的位置用白色覆盖掉

ax: 设置作图的坐标轴,一般画多个子图时需要修改不同的子图的该值
**kwargs:All other keyword arguments are passed to ax.pcolormesh

2.2 实战代码(特征筛选)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# ====热力图
data = pd.read_csv("data/all_data_standard.csv", encoding="utf-8")
data.drop_duplicates()
data.columns = [i for i in range(data.shape[1])]# 计算两两属性之间的皮尔森相关系数
corrmat = data.corr()
f, ax = plt.subplots(figsize=(12, 9))# 返回按“列”降序排列的前n行
k = 16
cols = corrmat.nlargest(k, data.columns[15]).index# 返回皮尔逊积矩相关系数
cm = np.corrcoef(data[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt=".2f", annot_kws={"size": 10}, yticklabels=cols.values, xticklabels=cols.values)plt.ylabel("features", fontsize=15)
plt.xlabel("features", fontsize=15)
plt.title("Thermal map", fontsize=15)
plt.show()

3.雷达图(聚类特征描述)

3.1 雷达图说明

1.雷达图作用是把信息在多个轴上进行评估,从而知道哪个轴数据表现优秀

2.还可用于对聚类后结果的特征描述。

3.2 函数接口

正常的plot图像不作过多解释,直接上代码

3.3 雷达图方法一

import pandas as pd
import numpy as np
import seaborn as sns
From sklearn.cluster import KMeans# ==========绘制聚类结果雷达图
df_features = pd.read_csv("real_data.csv", encoding="utf-8")# 构建聚类模型
estimater = KMeans(n_clusters=3)
estimater = estimater.fit(X=data)# 统计样本属性个数
N = len(estimater.cluster_centers_[0])# 将360度N等分,注意:要首位相接
angles = np.linspace(0, 2*np.pi, N, endpoint=False)
angles = np.concatenate((angles, [angles[0]]))# 画布上构建子图
fig = plt.figure(figsize=(7, 7))
ax = fig.add_subplot(111, polar=True)
Sam = ["r", "g", "b"]# 待显示的图例标签
lab = []# 遍历所有聚类中心
for i in range(len(estimater.cluster_centers_)):values = estimater.cluster_centers_[i]features = data.columnsvalues = np.concatenate((values, [values[0]]))ax.plot(angles, values, Sam[i], linewidth=2)# 颜色填充# ax.fill(angles, values, alpha=0.25)# 摆放特征名称ax.set_thetagrids(angles*180/np.pi, features)# 显示轴网络ax.grid(True)lab.append("customer"+str(i))
plt.title("title")# 显示图例
plt.legend(lab)
plt.show()

3.4 雷达图方法二

pygal

一个python svg图形绘图库。免费的第三方库,可自由进行修改,但没有任何保证。内部提供的是一些绘图的接口(条形图,堆积条形图,点状图,漏斗图,箱型图,仪表图,实心仪表,直方图,水平条形图,水平堆积条形图,线性图,水平线图,堆积线图,水平堆积线图,饼图,水平金字塔图,垂直金字塔图,雷达图,日期横坐标xy图,DateTime横坐标xy图,时间横坐标xy图,TimeDelta横坐标xy图,树状图,XY线图,),可直接进行绘图,相对于pyplot要简便一些。

import matplotlib.pyplot as plt
import pandas as pd
import pygal as pgcenters = [[55.46, 0.82, 30.06],[10.33, 0.88, 30.18],[10.71, 0.75, 29.84]]
df_features = pd.DataFrame(centers)
df_features.columns = ["a", "b", "c"]
df_features.index = ["aa", "bb", "cc"]# 构建雷达图对象
radar_chart = pg.Radar()# 设置雷达图标题
radar_chart._title = "Rader graph"# 设置雷达图x轴标签
radar_chart.x_labels = df_features.index# 在图中添加对象
radar_chart.add("customer1", centers[0])
radar_chart.add("customer2", centers[1])
radar_chart.add("customer3", centers[2])# 将图写入文件(可浏览器打开)
radar_chart.render_to_file('bar_chart.svg')

4.箱线图

https://www.jianshu.com/p/b2f70f867a4a

4.1 箱线图简介

箱线图是一种用作显示一组数据分散情况的统计图。常用于品质管理。主要用于反应原始数据的分布特征,还可进行多组数据分布特征的比较。从箱线图中可找出最大值最小值中位数下四分位数(25%)上四分位数(75%)异常值

注意:区间[Q1-1.5△Q, Q3+1.5△Q]之外的数据值被认为是异常值,应当被忽略。

4.2 第一种实现方式

通过matplotlib.pyplot实现

plt.boxplot(x, whis=None, labels=None)

参数:

x: 输入数据。数组(array)或容器的序列(a sequence of vectors)

whis: 浮点型,序列、字符串(默认为1.5)。调整的是判断异常值式(Q3-Q1)所占的权重

labels: 序列(sequence)。并且,长度必须与数据集的维度相同。

import matplotlib.pyplot as plt
import pandas as pdarray = dataFile.iloc[:, 10:15].valuesplt.rcParams["axes.unicode_minus"] = False
plt.rcParams["font.sans-serif"] = "SimHei"plt.boxplot(x=array, labels=["one", "two", "three", "four", "five"], whis=1.5)
plt.xlabel("Attribute")
plt.ylabel("Score")
plt.show()

4.3 第二种实现方式

pandas自带的画图工具(图片感觉不美观)

DataFrame.boxplot(grouped, subplots=True, column=None, fontsize=None, rot=0, grid=True, ax=None, figsize=None, layout=None, **kwds)

plt.show()

参数:

column: 待绘制箱线图的属性列。列名(字符串)、列表、容器。

fontsize: 图中文字大小。整形(int)或字符型(str)

rot: xlabels倾斜的角度。整形(int: 正负均可)、浮点型(float)、字符串(str)

grid: 是否显示图片中的网格。默认为True

figsize: 图片大小。元组 -> (长,宽)

import pandas as pd
import matplotlib.pyplot as pltdataFile = pd.read_csv("dataTest.csv", header=None, prefix="V")
dataFile = dataFile.iloc[:, 10:15]
dataFile.boxplot(column="V10", fontsize="22", rot=45)
plt.show()

4.4 第三种方式实现

from pylab import *

boxplot(x, whis=None, labels=None)

参数:

x: 绘制箱线图的属性列数据。array

whis: 判断异常值时的权重 [Q1-whis * △Q, Q3+whis * △Q]

labels: xlabels的名称。列表,长度应当与绘图数据的属性个数相同

show()

from pylab import *
import matplotlib.pyplot as plt
import pandas as pddataFile = pd.read_csv("dataTest.csv", header=None, prefix="V")
dataFile = dataFile.iloc[:, 10:15]boxplot(dataFile.values, whis=0.5, labels=["V10", "V11", "V12", "V13", "V14"])
show()

5. 平行坐标

平行坐标是一种比较常见的可视化方法,用于对高纬集合和多元数据的可视化。平行坐标为了表示在高纬空间中的一个点集,在N条平行的线的背景下(一般这N条线都竖直且等距),一个在高纬空间的点被表示为一条拐点在N条平行坐标轴的折线,在第K个坐标轴的位置就表示这个点在第K纬的值,平行坐标是信息可视化的一种重要技术。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as npdf_features = pd.read_csv("dataTest.csv", encoding="utf-8", header=None, prefix="V")summary = df_features.describe()
minRings = -1
maxRings = 99
nrows = 10for i in range(nrows):dataRow = df_features.iloc[i, 1:10]labelColor = (df_features.iloc[i, 10] - minRings)/(maxRings - minRings)# dataRow.plot(colors=plt.cm.RdY1Bu(labelColor), alpha=0.5)dataRow.plot(alpha=0.5)plt.xlabel("Attribute")
plt.ylabel("Score")
plt.show()

6.3D表面图

6.1 所需第三方库

from mpl_toolkits.mplot3d import Axes3D

mplot3d模块中的Axes3D绘图类

from matplotlib.ticker import LinearLocator, FormatStrFormatter

ticker模块主要提供“刻度的划分”和“刻度值的格式化”

matplotlib包中ticker模块中LinearLocator类(刻度划分)和FormatStrFormatter类(使用“%”来格式化轴刻度值)from matplotlib import cm

matplot内置的色彩映射模块

6.2 重点函数

①ax = Axes3D(fig):将matplotlib.figure.Figure对象转换成rect=[left, bottom, width, height]的3D对象

②np.meshgrid(*xi, indexing, sparse, copy, **kwargs):将坐标向量转换成坐标矩阵

【参数】

*xi:表示网格坐标的一维数组

indexing:设置输出索引的形式。(笛卡尔("xy")和矩阵("ij"))

sparse: 默认为False.若为True,则为节省内存返回稀疏网格

copy: 默认为True.若为False, 则为节省内存返回原始数组。(sparse=False, copy=False很有可能返回非连续数组)

【调整结果展示】

①x1:向下拓展

②x2:向右拓展

③组合成(x1, x2)坐标,并将其定位;

④将(x1, x2)带入f中求解出对应的Z轴数值

③Axes3d.plot_surface(x, y, z, rcount, ccount, rstride, cstride, color, cmap, facecolors, norm, vmin, vmax, shade, *kwargs): 创建表面图

【参数】

x, y, z: 二维数组

rcount, ccount: 每个方向上的最大样本数。默认为50

rstride, cstride: 同rcount 和 ccount的作用都是为了精简坐标轴不同方向的样本数量,因此不能同时设置。默认为10.

color: 表面贴片的颜色surface patches

cmap: 表面贴片的颜色映射 Colormap

facecolors: 每个小块的颜色(list形式)

norm, vmin, vmax: 颜色映射标准化,标准化的下限和上限

shade: 是否给表面的颜色打上阴影

linewidth: 线条的宽度

antialiased: 是否平滑(True or False)

# ==========python绘制3D表面图(3维图)
# class Axes3D: 3D绘图类
# module ticker: 提供 ”刻度的定位“ 及 ”刻度的格式化“
# class LinearLocator: 刻度划分
# class FormatStrFormatter: 使用“%”来格式化轴刻度值
# module cm: 内置的色彩映射模块
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np
from matplotlib import cmfig = plt.figure(figsize=(10, 8))# 将matplotlib.figure.Figure对象转换成rect=[left, bottom, width, height]的3D对象
ax = Axes3D(fig=fig)X = np.arange(-5, 5, step=0.1)
Y = np.arange(-5, 5, step=0.1)# np.meshgrid: 坐标向量转变为坐标矩阵
X, Y = np.meshgrid(X, Y, indexing="xy", sparse=True, )
R = np.sqrt(X**2 + Y**2)
Z = np.cos(R)# ax.plot_surface: 创建表面图
# ax.set_zlim: 设置3D图中z轴的数值
# ax.zaxis: 初始化3D轴
# LinearLocator(numticks=10): 将z轴刻度划分为10部分
# FormatStrFormatter("%.2f"):z轴刻度值表里路两位小数
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap("rainbow"), linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)
ax.xaxis.set_major_locator(LinearLocator(numticks=10))
ax.xaxis.set_major_formatter(FormatStrFormatter("%.1f"))
ax.yaxis.set_major_locator(LinearLocator(numticks=10))
ax.yaxis.set_major_formatter(FormatStrFormatter("%.1f"))
ax.zaxis.set_major_locator(LinearLocator(numticks=10))
ax.zaxis.set_major_formatter(FormatStrFormatter("%.1f"))# fig.colorbar: 创建颜色栏
# shrink: 颜色条长度的收缩比
# aspect: 颜色条宽度
fig.colorbar(surf, aspect=5, shrink=0.5)
plt.show()

7.绘制混淆矩阵

混淆矩阵是机器学习当中一中评价模型分类效果的方法,通过决策矩阵就可计算出单分类的准确率(accuracy)、查全率、查准率、召回率(recall_score)和F1-score等。

from sklearn.metrics import confusion_matrix    # 生成混淆矩阵函数
import matplotlib.pyplot as plt    # 绘图库
import numpy as np
import tensorflow as tfdef plot_confusion_matrix(cm, labels_name, title):# 归一化cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]# 在特定的窗口上显示图像plt.imshow(cm, interpolation='nearest')plt.title(title)# 标度条plt.colorbar()num_local = np.array(range(len(labels_name)))# 设定x轴标签# rotation:为标签的旋转角度   plt.xticks(num_local, labels_name, rotation=90)plt.yticks(num_local, labels_name)  plt.ylabel('True label')    plt.xlabel('Predicted label')plt.show()# 此处混淆矩阵为模型实际生成值,因此,此处只给出模型的计算结果
pred_y = session.run(tf.argmax(y_, 1), feed_dict={X: test_x})
cm = confusion_matrix(np.argmax(test_y, 1), pred_y,)
print(cm)
# [[100   1   0   1   6   0   0]
#  [  2 111   3   0   2   1  24]
#  [  0   2  68   5   4   3   2]
#  [  2   0   1 120   7  26   0]
#  [  2   5   3   2 120  11  14]
#  [  2   0   2  12   8 115   1]
#  [  2  25   0   1  14   4 302]]# 调用绘制混淆矩阵的函数
plot_confusion_matrix(cm, labels_name, "HAR Confusion Matrix")

8.饼状图

import matplotlib.pyplot as plt
import numpy as npplt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = Falselabels = ["鸭子", "狗子", "牛子", "猪子"]
values = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)plt.figure(figsize=(6, 3))
plt.pie(x=values, explode=explode, labels=labels, autopct="%1.1f")# 获取或设置轴属性的便捷方法
# equal: 保持图形的形状,不会随着x或者y的拉伸而拉伸
plt.axis("equal")plt.show()

9.3D散点图

from mpl_toolkits.mplot3d import Axes3D

mplot3d模块中的Axes3D绘图类

from matplotlib.ticker import LinearLocator, FormatStrFormatter

ticker模块主要提供“刻度的划分”和“刻度值的格式化”

matplotlib包中ticker模块中LinearLocator类(刻度划分)和FormatStrFormatter类(使用“%”来格式化轴刻度值)from matplotlib import cm

matplot内置的色彩映射模块

# ! /usr/bin/env python
# coding:utf-8
# python interpreter:3.6.2
# author: admin_maxin
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn import preprocessing
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 设置显示字体
plt.rcParams["axes.unicode_minus"] = False  # 设置正常显示符号data = pd.read_csv("data1.csv", encoding="utf-8", header=0, index_col=0)
X = data
# X = preprocessing.minmax_scale(X)
# X = pd.DataFrame(X)# 构造聚类模型
estimator = KMeans(n_clusters=3)
estimator.fit(X)
label_pred = estimator.labels_# 绘制k-means结果
x0 = X[label_pred == 0]
x1 = X[label_pred == 1]
x2 = X[label_pred == 2]
# x3 = X[label_pred == 3]# 绘制三维散点图
fig = plt.figure()
# ax = fig.add_subplot(111, projection='3d')
ax = Axes3D(fig)# x,y,s要求是list等的array_list类型的数据
ax.scatter(list(x0.iloc[:, 0]), list(x0.iloc[:, 1]), list(x0.iloc[:, 2]), c="red", marker='o', label='label0')
ax.scatter(list(x1.iloc[:, 0]), list(x1.iloc[:, 1]), list(x1.iloc[:, 2]), c="green", marker='*', label='label1')
ax.scatter(list(x2.iloc[:, 0]), list(x2.iloc[:, 1]), list(x2.iloc[:, 2]), c="blue", marker='+', label='label2')
# ax.scatter(list(x3.iloc[:, 0]), list(x3.iloc[:, 1]), list(x3.iloc[:, 2]), c="pink", marker='x', label='label3')ax.set_xlabel('属性个数')
ax.set_ylabel('标签个数')
ax.set_zlabel('样本量')data["label"] = "0"
for i in range(data.shape[0]):data.iloc[i, 3] = list(estimator.labels_)[i]
data.to_csv("mydata.csv", sep=",", header=True, index=True, encoding="utf-8")plt.legend()
plt.show()

python3__绘图__常用数据分析图形(热力图,雷达图,箱线图,平行坐标,3D图,混淆矩阵,饼状图)相关推荐

  1. Python 数据分析三剑客之 Matplotlib(七):饼状图的绘制

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  2. matplotlib数据可视化实战——饼状图+雷达图+三维图

    今天又学习了两种新的图形绘制方法,并且学会了全局设置中文字体的方法. 全局中文字体设置及负数显示问题 plt.rcParams['font.family'] = 'sans-serif' plt.rc ...

  3. matplotlib绘图(折线图,柱状图,饼状图,散点图,直方图)

    matplotlib绘图 折线图 柱状图 叠加柱状图 并列柱状图 水平柱状图(条形图) 饼状图 散点图 直方图 折线图 x = [1,2,3,4,5] y = [1,2,3,4,5] # 调用绘制线性 ...

  4. Android之玩转MPAndroidChart让(折线图、柱形图、饼状图、散列图、雷达图)优雅的舞...

    2019独角兽企业重金招聘Python工程师标准>>> 把开源项目MPAndroidChart里面的折线图.柱形图.饼状图.散列图.雷达图怎么使用和一些属性详细的介绍,当我们项目 g ...

  5. 用php怎么输出饼状图,php绘图之生成饼状图的方法_PHP

    本文实例讲述了php绘图之生成饼状图的方法.分享给大家供大家参考.具体如下: 这里要实现的功能是人口分布比例图,由扇形组成一个圆,每个扇形颜色不一样. 代码如下: $array = array(&qu ...

  6. python excel数据分析画直方图 饼状图_Excel数据可视化应用(直方图、折线图、饼状图)...

    直方图:对比关系 直方图是一种统计报告图,是表示资料变化情况的主要工具.直方图由一系列高度不等的的纵向条纹或线段表示数据分布的情况.一般用横轴表示数据类型,纵轴表示分布情况. 例1: 1.右键单击图表 ...

  7. 饼状图环形图数据信息PR图形模板MOGRT

    Premiere Pro创建漂亮的饼状图环形图数据信息PR图形模板Mogrt 12个可完全自定义的数据驱动饼图模板.更改数据.颜色.大小.字体.持续时间等. 技术特点: Premiere Pro 20 ...

  8. 使用matplotlib绘制图形(条形图,饼状图,散点图,直方图)

    安装 pip install matplotlib 图形的基础绘制 from matplotlib import pyplot as plt# 设置图形大小,figure图形图像的意思,在这里指的是我 ...

  9. python数据可视化 matplotlib(2) 小白 - 典型图形进阶版:堆积折线图/并列柱状图/阶梯图/箱线图

    今天依然是matplotlib,在入门版的基础上加入了更多的组合和样式设置,matplotlib库是建立在Numpy基础上的绘图库. 典型统计图形对比 柱状图 堆积图:将若干统计图形堆叠起来的统计图形 ...

最新文章

  1. 开发时,尤其是最初的版本,只要保持有80%的功能即可
  2. Andriod anim translate中的属性介绍
  3. protect 继承_(转)public、protect、private继承方式 C++
  4. 哈佛大学计算机科学专,哈佛大学计算机科学专业
  5. python3 django连接mysql 数据库
  6. 微服务 注册中心_4.微服务架构的第二个组件:注册中心
  7. 计算机win7无法安装,新机装不了Win7?照这个方法5分钟搞定!
  8. LA 3523 圆桌骑士
  9. 浅谈Nginx性能调优
  10. python支持强大的科学计算功能_Python可以做什么——Python语言的一个简要导引
  11. 互联网企业安全高级指南3.7 如何看待SDL
  12. 框架设计知识点纵览(笔记)
  13. AB PLC 1769_L24ER_QB1B新机测试固件下载-程序下载
  14. Quartus破解成功,但出现不支持某些设备的问题解决
  15. UI设计---化繁为简
  16. windows环境下编译ACE+TAO问题及解决办法
  17. springcloud采坑-jason序列化中的Date对象
  18. IT行业的哪些岗位比较有前途?
  19. Activiti 学习笔记八:排他网关(ExclusiveGateWay)
  20. IIS服务器的安全保护措施

热门文章

  1. 入门知识(四)WPF绘图入门到精通。
  2. 二级分销小程序怎么做
  3. php rsa pss,RSA签名的PSS模式
  4. file Android close,file close是什么意思
  5. 阿里大于短信服务_异常_01_InvalidTimeStamp.Expired
  6. OpenCV 3 boxPoints()
  7. 【Android】设置EditText输入类型和内容长度
  8. 艾永亮:靠二次元起家的B站如何赢得1.3亿活跃用户?
  9. java sax解析_Java 解析xml 之 SAX解析
  10. float 浮动 position 定位 阴影