Python数据可视化科技图表绘制系列教程(一)
目录
创建多个坐标图形(坐标系)
图表的组成
创建图形与子图
创建子图1
创建子图2
创建子图3
创建子图4
创建子图5
添加图表元素
极坐标图1
极坐标图2
【声明】:未经版权人书面许可,任何单位或个人不得以任何形式复制、发行、出租、改编、汇编、传播、展示或利用本博客的全部或部分内容,也不得在未经版权人授权的情况下将本博客用于任何商业目的。但版权人允许个人学习、研究、欣赏等非商业性用途的复制和传播。非常推荐大家学习《Python数据可视化科技图表绘制》这本书籍。
创建多个坐标图形(坐标系)
import matplotlib.pyplot as pltplt.figure()
plt.axes([0.0,0.0,1,1])
plt.axes([0.1,0.1,.5,.5],facecolor='blue')
plt.axes([0.2,0.2,.5,.5],facecolor='pink')
plt.axes([0.3,0.3,.5,.5],facecolor='green')
plt.axes([0.4,0.4,.5,.5],facecolor='skyblue')plt.savefig("P54创建多个坐标图形(坐标系).png", dpi=600)
plt.show()

图表的组成
import matplotlib.pyplot as plt
import numpy as npfrom matplotlib.patches import Circle
from matplotlib.patheffects import withStroke
from matplotlib.ticker import AutoMinorLocator,MultipleLocatorroyal_blue=[0,20/256,82/256] # 自定义的颜色
# 创建图形
np.random.seed(19781101) # 固定随机种子,以便结果可复现# 生成数据
X=np.linspace(0.5,3.5,100) # 生成等间隔的X值
Y1=3+np.cos(X) # 第一组数据,基于余弦函数
Y2=1+np.cos(1+X/0.75)/2 # 第二组数据,变化的余弦函数
Y3=np.random.uniform(Y1,Y2,len(X)) # 第三组数据,Y1与Y2之间的随机数# 创建并配置图形和轴
fig=plt.figure(figsize=(7.5,7.5)) # 创建图形,指定大小
ax=fig.add_axes([0.2,0.17,0.68,0.7],aspect=1) # 添加轴,设置宽高比# 设置主要和次要刻度定位器
ax.xaxis.set_major_locator(MultipleLocator(1.000)) # X轴的主要刻度间隔
ax.xaxis.set_minor_locator(AutoMinorLocator(4)) # X轴的次要刻度间隔
ax.yaxis.set_major_locator(MultipleLocator(1.000)) # Y轴的主要刻度间隔
ax.yaxis.set_minor_locator(AutoMinorLocator(4)) # Y轴的次要刻度间隔
ax.xaxis.set_minor_formatter("{x:.2f}") # 设置次要刻度的格式# 设置坐标轴的显示范围
ax.set_xlim(0,4)
ax.set_ylim(0,4)# 配置刻度标签的样式
ax.tick_params(which='major',width=1.0,length=10,labelsize=14) # 主刻度
ax.tick_params(which='minor',width=1.0,length=5,labelsize=10,labelcolor='0.25') # 次刻度# 添加网格
ax.grid(linestyle="--",linewidth=0.5,color='.25',zorder=-10) # 设置网格样式和图层顺序# 绘制数据
ax.plot(X,Y1,c='C0',lw=2.5,label="Blue signal",zorder=10) # 绘制第一组数据,设置图层顺序
ax.plot(X,Y2,c='C1',lw=2.5,label="Orange signal") # 绘制第二组数据
# 绘制第三组数据作为散点图
ax.plot(X[::3],Y3[::3],linewidth=0,markersize=9,marker='s',markerfacecolor='none',markeredgecolor='C4',markeredgewidth=2.5)# 设置标题和轴标签
ax.set_title("Anatomy of a figure",fontsize=20,verticalalignment='bottom')
ax.set_xlabel("x Axis label",fontsize=14)
ax.set_ylabel("y Axis label",fontsize=14)
ax.legend(loc="upper right",fontsize=14) # 添加图例# 标注图形
def annotate(x,y,text,code):
# 添加圆形标记c=Circle((x,y),radius=0.15,clip_on=False,zorder=10,linewidth=2.5,edgecolor=royal_blue+[0.6],facecolor='none',path_effects=[withStroke(linewidth=7,foreground='white')])
# 使用路径效果突出标记ax.add_artist(c)# 使用路径效果为文本添加背景
# 分别绘制路径效果和彩色文本,以避免路径效果裁剪其他文本for path_effects in [[withStroke(linewidth=7,foreground='white')],[]]:color='white' if path_effects else royal_blueax.text(x,y-0.2,text,zorder=100,ha='center',va='top',weight='bold',color=color,style='italic',fontfamily='monospace',path_effects=path_effects)color='white' if path_effects else 'black'ax.text(x,y-0.33,code,zorder=100,ha='center',va='top',weight='normal',color=color,fontfamily='monospace',fontsize='medium',path_effects=path_effects)# 通过调用自定义的annotate函数来添加多个图形标注
# 具体标注调用代码,每次调用都是标注图形的一个特定部分和相关的Matplotlib命令
annotate(3.5,-0.13,"Minor tick label","ax.xaxis.set_minor_formatter")
annotate(-0.03,1.0,"Major tick","ax.yaxis.set_major_locator")
annotate(0.00,3.75,"Minor tick","ax.yaxis.set_minor_locator")
annotate(-0.15,3.00,"Major tick label","ax.yaxis.set_major_formatter")
annotate(1.68,-0.39,"xlabel","ax.set_xlabel")
annotate(-0.38,1.67,"ylabel","ax.set_ylabel")
annotate(1.52,4.15,"Title","ax.set_title")
annotate(1.75,2.80,"Line","ax.plot")
annotate(2.25,1.54,"Markers","ax.scatter")
annotate(3.00,3.00,"Grid","ax.grid")
annotate(3.60,3.58,"Legend","ax.legend")
annotate(2.5,0.55,"Axes","fig.subplots")
annotate(4,4.5,"Figure","plt.figure")
annotate(0.65,0.01,"x Axis","ax.xaxis")
annotate(0,0.36,"y Axis","ax.yaxis")
annotate(4.0,0.7,"Spine","ax.spines")
# 给图形周围添加边框
fig.patch.set(linewidth=4,edgecolor='0.5')# 保存图片
plt.savefig('P55图表的组成.png', dpi=600, transparent=True)
plt.show()

创建图形与子图
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris# 加载 iris 数据集
iris=load_iris()
data=iris.data
target=iris.target# 提取数据
sepal_length=data[:,0]
petal_length=data[:,2]# 创建图形和子图
fig,axs=plt.subplots(1,2,figsize=(10,5)) # 创建包含两个子图的图形
fig.suptitle('Sepal Length vs Petal Length',fontsize=16) # 设置图形标题# 第1个子图:线图
axs[0].plot(sepal_length,label='Sepal Length',color='blue',linestyle='-') # 绘制线图
axs[0].plot(petal_length,label='Petal Length',color='green',linestyle='--') # 绘制另一个线图
axs[0].set_xlabel('Sample') # 设置x轴标签
axs[0].set_ylabel('Length') # 设置y轴标签
axs[0].legend() # 添加图例
axs[0].grid(True) # 添加网格线# 第2个子图:散点图
scatter=axs[1].scatter(sepal_length,petal_length,c=target,cmap='viridis',label='Data Points') # 绘制散点图
axs[1].set_xlabel('Sepal Length') # 设置x轴标签
axs[1].set_ylabel('Petal Length') # 设置y轴标签
axs[1].legend() # 添加图例
axs[1].grid(True) # 添加网格线
fig.colorbar(scatter,ax=axs[1],label='Species') # 添加颜色条plt.tight_layout() # 自动调整子图布局# 保存图片
plt.savefig('P58创建图形与子图.png', dpi=600, transparent=True)
plt.show()

创建子图1
# 安装和导入必要的库:
import matplotlib.pyplot as plt
import seaborn as sns # seaborn 库内置了iris数据集# 加载iris数据集并查看其结构
iris=sns.load_dataset('iris')
iris.head() # 输出略
plt.figure(figsize=(10,6)) # 设置画布大小# 第1个子图
plt.subplot(2,2,1) # 2行2列的第1个
plt.hist(iris['sepal_length'],color='blue')
plt.title('Sepal Length')
# 第2个子图
plt.subplot(2,2,2) # 2行2列的第2个
plt.hist(iris['sepal_width'],color='orange')
plt.title('Sepal Width')
# 第3个子图
plt.subplot(2,2,3) # 2行2列的第3个
plt.hist(iris['petal_length'],color='green')
plt.title('Petal Length')
# 第4个子图
plt.subplot(2,2,4) # 2行2列的第4个
plt.hist(iris['petal_width'],color='red')
plt.title('Petal Width')plt.tight_layout() # 自动调整子图间距# 保存图片
plt.savefig('P60创建子图1.png', dpi=600, transparent=True)
plt.show()

创建子图2
import matplotlib.pyplot as plt
import seaborn as snsdata=sns.load_dataset("iris") # 加载内置的iris数据集# 使用plt.subplots()创建一个2行3列的子图布局
fig,axs=plt.subplots(2,3,figsize=(15,8))# 第1个子图:绘制sepal_length和sepal_width的散点图
axs[0,0].scatter(data['sepal_length'],data['sepal_width'])
axs[0,0].set_title('Sepal Length vs Sepal Width')# 第2个子图:绘制petal_length和petal_width的散点图
axs[0,1].scatter(data['petal_length'],data['petal_width'])
axs[0,1].set_title('Petal Length vs Petal Width')# 第3个子图:绘制sepal_length的直方图
axs[0,2].hist(data['sepal_length'],bins=20)
axs[0,2].set_title('Sepal Length Distribution')# 4个子图:绘制petal_length的直方图
axs[1,0].hist(data['petal_length'],bins=20)
axs[1,0].set_title('Petal Length Distribution')# 第5和第6位置合并为一个大图,展示species的计数条形图
# 为了合并第二行的中间和最右侧位置,使用subplot2grid功能
plt.subplot2grid((2,3),(1,1),colspan=2)
sns.countplot(x='species',data=data)
plt.title('Species Count')plt.tight_layout() # 调整子图之间的间距# 保存图片
plt.savefig('P61创建子图2.png', dpi=600, transparent=True)
plt.show()

创建子图3
import matplotlib.pyplot as pltfig = plt.figure(figsize=(8,4)) # 创建一个图形实例# 添加第1个子图:1行2列的第1个位置
ax1=fig.add_subplot(1,2,1)
ax1.plot([1,2,3,4],[1,4,2,3]) # 绘制一条简单的折线图
ax1.set_title('First Subplot')# 添加第2个子图:1行2列的第2个位置
ax2=fig.add_subplot(1,2,2)
ax2.bar([1,2,3,4],[10,20,15,25]) # 绘制一个条形图
ax2.set_title('Second Subplot')# 显示图形
plt.tight_layout() # 自动调整子图参数,使之填充整个图形区域# 保存图片
plt.savefig('P63创建子图3.png', dpi=600, transparent=True)
plt.show()

创建子图4
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris# 载入鸢尾花数据集
iris=load_iris()
data=iris.data
target=iris.target
feature_names=iris.feature_names
target_names=iris.target_namesgrid_size=(3,3) # 定义网格大小为3x3# 第1个子图占据位置 (0,0)
ax1=plt.subplot2grid(grid_size,(0,0),facecolor='orange')
ax1.scatter(data[:,0],data[:,1],c=target,cmap='viridis')
ax1.set_xlabel(feature_names[0])
ax1.set_ylabel(feature_names[1])# 第2个子图占据位置(0,1),并跨越2列
ax2=plt.subplot2grid(grid_size,(0,1),colspan=2,facecolor='pink')
ax2.scatter(data[:,1],data[:,2],c=target,cmap='viridis')
ax2.set_xlabel(feature_names[1])
ax2.set_ylabel(feature_names[2])# 第3个子图占据位置(1,0),并跨越2行
ax3=plt.subplot2grid(grid_size,(1,0),rowspan=2,facecolor='grey')
ax3.scatter(data[:,0],data[:,2],c=target,cmap='viridis')
ax3.set_xlabel(feature_names[0])
ax3.set_ylabel(feature_names[2])# 第4个子图占据位置 (1,1),并跨越到最后
ax4=plt.subplot2grid(grid_size,(1,1),colspan=2,rowspan=2,facecolor='skyblue')
ax4.scatter(data[:,2],data[:,3],c=target,cmap='viridis')
ax4.set_xlabel(feature_names[2])
ax4.set_ylabel(feature_names[3])plt.tight_layout()# 保存图片
plt.savefig('P64创建子图4.png', dpi=600, transparent=True)
plt.show()

创建子图5
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from sklearn.datasets import load_iris# 载入Iris数据集
iris=load_iris()
data=iris.data
target=iris.target
feature_names=iris.feature_names
target_names=iris.target_names# 创建一个2x2的子图网格
fig=plt.figure(figsize=(10,6))
gs=gridspec.GridSpec(2,2,height_ratios=[1,1],width_ratios=[1,1])# 在网格中创建子图
ax1=plt.subplot(gs[0,0])
ax1.scatter(data[:,0],data[:,1],c=target,cmap='viridis')
ax1.set_xlabel(feature_names[0])
ax1.set_ylabel(feature_names[1])
ax1.set_title('Sepal Length vs Sepal Width')ax2=plt.subplot(gs[0,1])
ax2.scatter(data[:,1],data[:,2],c=target,cmap='viridis')
ax2.set_xlabel(feature_names[1])
ax2.set_ylabel(feature_names[2])
ax2.set_title('Sepal Width vs Petal Length')ax3=plt.subplot(gs[1,:])
ax3.scatter(data[:,2],data[:,3],c=target,cmap='viridis')
ax3.set_xlabel(feature_names[2])
ax3.set_ylabel(feature_names[3])
ax3.set_title('Petal Length vs Petal Width')plt.tight_layout() # 调整布局# 保存图片
plt.savefig('P66创建子图5.png', dpi=600, transparent=True)
plt.show()

添加图表元素
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_iris# 载入Iris数据集
iris=load_iris()
data=iris.data
target=iris.target
feature_names=iris.feature_names
target_names=iris.target_namesfig,ax=plt.subplots(figsize=(6,4)) # 创建图形和子图
# 绘制散点图
for i in range(len(target_names)):ax.scatter(data[target==i,0],data[target==i,1],label=target_names[i])
ax.set_title('Sepal Length vs Sepal Width',fontsize=16) # 添加标题
ax.legend(fontsize=12) # 添加图例
ax.grid(True,linestyle='--',alpha=0.5) # 添加网格线# 自定义坐标轴标签
ax.set_xlabel(feature_names[0],fontsize=14)
ax.set_ylabel(feature_names[1],fontsize=14)
# 设置坐标轴刻度标签大小
ax.tick_params(axis='both',which='major',labelsize=12)plt.tight_layout() # 调整图形边界# 保存图片
plt.savefig('P68添加图表元素.png', dpi=600, transparent=True)
plt.show()

极坐标图1
import matplotlib.pyplot as plt
import numpy as np# 创建一些示例数据
theta=np.linspace(0,2*np.pi,100)
r=np.abs(np.sin(theta))plt.figure(figsize=(6,6))
ax=plt.subplot(111,projection='polar') # 创建极坐标系图形
ax.plot(theta,r,color='blue',linewidth=2) # 绘制极坐标系图形
ax.set_title('Polar Plot',fontsize=16) # 添加标题# 保存图片
plt.savefig('P70极坐标图1.png', dpi=600, transparent=True)
plt.show()

极坐标图2
import matplotlib.pyplot as plt
import numpy as np#生成模拟的周期性数据
theta=np.linspace(0,2*np.pi,100)
r=10+5*np.sin(6*theta)plt.figure(figsize=(6,6))
ax=plt.subplot(111,projection='polar') # 创建极坐标系图形
ax.plot(theta,r,color='blue',linewidth=2) # 绘制极坐标系图形
ax.set_title('Polar Plot',fontsize=16) # 添加标题# 保存图片
plt.savefig('P70极坐标图2.png', dpi=600, transparent=True)
plt.show()

相关文章:

Python数据可视化科技图表绘制系列教程(一)
目录 创建多个坐标图形(坐标系) 图表的组成 创建图形与子图 创建子图1 创建子图2 创建子图3 创建子图4 创建子图5 添加图表元素 极坐标图1 极坐标图2 【声明】:未经版权人书面许可,任何单位或个人不得以任何形式复制、…...

移除3D对象的某些部分点云
1,目的 移除3D对象指定区域的点云。效果 2,原理。 通过投影剔除指定区域外的点云数据。 3,主要的算子。 3.1,gen_image_gray_ramp 是 Halcon 中用于生成线性灰度渐变图像的算子 功能概述 数学原理 生成的图像灰度值…...

阿里云为何,一个邮箱绑定了两个账号
阿里云“幽灵账号”之谜:同一个邮箱注销后仍有两个账号?深度揭秘成因与终极解决方案! 你是否曾在阿里云上使用同一个邮箱注册过多个账号,明明已经**“彻底”注销了其中一个**,却惊愕地发现系统里依然**“幽灵般”挂着…...

高效视频倍速播放插件推荐
软件介绍 本文介绍一款名为Global Speed的视频速度控制插件,该插件在插件市场评分极高,被公认为目前最好用的视频倍速插件之一。 插件安装与基本功能 安装Global Speed插件后,用户只需点击插件图标即可选择播放倍数,最高支持16…...

无他相机:专业摄影,触手可及
在数字摄影时代,手机摄影已成为许多人记录生活、表达创意的重要方式。无他相机正是这样一款专为摄影爱好者设计的相机应用程序,它不仅提供了专业级摄影设备的大部分功能,还通过简洁直观的操作界面,让每一位用户都能轻松上手&#…...

基于贝叶斯优化神经网络的光伏功率预测综述
基于贝叶斯优化神经网络的光伏功率预测综述 一、贝叶斯优化的基本原理与核心组件 贝叶斯优化(Bayesian Optimization, BO)是一种基于概率模型的全局优化方法,特别适用于高成本评估的黑盒函数优化问题。其核心由代理模型和采集函数构成&…...

【C++11】折叠引用和完美转发
目录 一. 前言二. 引用折叠引用折叠的规则 三. 完美转发完美转发适用场景完美转发底层实现思考1思考2 一. 前言 在函数传参时,如果想保持某个参数的属性不改变,需要完美转发,而完美转发的实现需要折叠引用的帮助 二. 引用折叠 在语法上&am…...

数据结构:递归:自然数之和
目录 递归解法 🔹第一步:定义本质问题 🔹第二步:分解问题结构 🔹第三步:定义初始条件 🔹第四步:递归思想的自然生成 循环解法 🔹第 1 步:定义问题最小…...

网易 - 灵犀办公文档
一. 企业介绍 网易是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,通过开设新闻、娱乐、体育等30多个内容频道,以及博客、视频、论坛等互动交流,网聚人的力量。 为了给中小企业和个人打造一款综合性办公产…...

【C++】模板与特化技术全面教程(claude sonnet 4)
第一章:模板的基础概念 (Template Fundamentals) 1.1 什么是模板? 模板 (Template) 是C中的一种泛型编程 (Generic Programming) 机制,它允许我们编写与类型无关的代码。想象一下,如果我们要为不同的数据类型编写相同逻辑的函数&a…...

ABAP设计模式之---“高内聚,低耦合(High Cohesion Low Coupling)”
“高内聚、低耦合”是面向对象编程中非常重要的设计原则,它有助于提高代码的可维护性、扩展性和复用性。 1. 初衷:为什么会有这个原则? 在软件开发中,随着业务需求的复杂化,代码难免会变得越来越庞大。如果开发者将一…...

RagFlow优化代码解析(一)
引子 前文写到RagFlow的环境搭建&推理测试,感兴趣的童鞋可以移步(RagFlow环境搭建&推理测试-CSDN博客)。前文也写过RagFLow参数配置&测试的文档,详见()。很少写关于具体代码的blog,…...

【python与生活】用 Python 从视频中提取音轨:一个实用脚本的开发与应用
在当今数字化的时代,视频内容无处不在。无论是学习教程、会议记录、在线讲座还是娱乐视频,我们每天都会接触到大量的视频资源。有时候,我们可能只对视频中的音频部分感兴趣,比如提取讲座的音频用于后续收听,或者从电影…...

深度强化学习赋能城市消防优化,中科院团队提出DRL新方法破解设施配置难题
在城市建设与发展中,地理空间优化至关重要。从工业园区选址,到公共服务设施布局,它都发挥着关键作用。但传统求解方法存在诸多局限,如今,深度学习技术为其带来了新的转机。 近日,在中国地理学会地理模型与…...
云原生周刊:探索 Gateway API v1.3.0
开源项目推荐 WatchAlert WatchAlert 是一个轻量级、云原生的多数据源监控告警引擎,支持 AI 驱动的智能告警分析,旨在帮助升级您的监控系统架构。该项目基于 Go 和 React 开发,提供了现代化的前后端架构。后端使用 Go 语言,结合…...

008房屋租赁系统技术揭秘:构建智能租赁服务生态
房屋租赁系统技术揭秘:构建智能租赁服务生态 在房地产租赁市场日益活跃的当下,房屋租赁系统成为连接房东与租客的重要数字化桥梁。该系统集成用户管理、房屋信息等多个核心模块,面向管理员、房东和用户三类角色,通过前台展示与后…...
Python训练打卡Day41
简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 → Batch…...

spring-boot-admin实现对微服务监控
spring-boot-admin可以对微服务的状态进行监控,步骤如下: 1、添加spring-boot-admin和nacos依赖 <!-- nacos注册中心 --> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-n…...
Linux 权限管理入门:从基础到实践
文章目录 引言一、Linux 权限管理概述二、文件权限值的表示方法三、文件访问权限的设置(chmod)四、file指令:快速识别文件类型五、目录的权限六、普通文件的权限七、权限总结八、粘滞位 引言 在 Linux 系统中,权限管理是确保多用…...

Mycat的监控
参考资料: 参考视频 参考博客 Mysql分库分表(基于Mycat)的基本部署 MySQL垂直分库(基于MyCat) Mysql水平分表(基于Mycat)及常用分片规则 视频参考资料及安装包: https://pan.b…...

Glide源码解析
前言 Glide是一款专为Android设计的开源图片加载库。有以下特点:1.支持高效加载网络、本地及资源图片;2.具备良好的缓存策略及生命周期管理策略;3.提供了简易的API和强大的功能。本文将对其源码进行剖析。 基本使用 dependencies {compile …...

7.RV1126-OPENCV cvtColor 和 putText
一.cvtColor 1.作用 cvtColor 是 OPENCV 里面颜色转换的转换函数。能够实现 RGB 图像转换成灰度图、灰度图转换成 RGB 图像、RGB 转换成 HSV 等等 2.API CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn 0 ); 第一个参数:…...
Android 之 kotlin 语言学习笔记二(编码样式)
参考官方文档:https://developer.android.google.cn/kotlin/style-guide?hlzh-cn#whitespace 1、源文件命名 所有源文件都必须编码为 UTF-8。如果源文件只包含一个顶级类,则文件名应为该类的名称(区分大小写)加上 .kt 扩展名。…...

Redisson单机模式
redisson调用unlock的过程 Redisson 是一个基于 Redis 的 Java 驻内存数据网格(In-Memory Data Grid)框架,提供了分布式和可扩展的数据结构和服务。Redisson 的 unlock 方法用于释放锁。下面是 unlock 方法的调用过程: 获取锁的状…...

数据结构第6章 图(竟成)
第 6 章 图 【考纲内容】 1.图的基本概念 2.图的存储及基本操作:(1) 邻接矩阵法;(2) 邻接表法;(3) 邻接多重表、十字链表 3.图的遍历:(1) 深度优先搜索;(2) 广度优先搜索 4.图的基本应用:(1) 最小 (代价) 生…...

机器人现可完全破解验证码:未来安全技术何去何从?
引言 随着计算机视觉技术的飞速发展,机器学习模型现已能够100%可靠地解决Google的视觉reCAPTCHAv2验证码。这标志着一个时代的结束——自2000年代初以来,CAPTCHA("全自动区分计算机与人类的图灵测试"的缩写)一直是区分…...

CppCon 2014 学习:(Costless)Software Abstractions for Parallel Architectures
硬件和科学计算的演变关系: 几十年来的硬件进步:计算机硬件不断快速发展,从提升单核速度,到多核并行。科学计算的驱动力:科学计算需求推动硬件创新,比如需要更多计算能力、更高性能。当前的解决方案是并行…...

网络爬虫 - App爬虫及代理的使用(十一)
App爬虫及代理的使用 一、App抓包1. App爬虫原理2. reqable的安装与配置1. reqable安装教程2. reqable的配置3. 模拟器的安装与配置1. 夜神模拟器的安装2. 夜神模拟器的配置4. 内联调试及注意事项1. 软件启动顺序2. 开启抓包功能3. reqable面板功能4. 夜神模拟器设置项5. 注意事…...
Kafka集群部署(docker容器方式)SASL认证(zookeeper)
一、服务器环境 序号 部署版本 版本 1 操作系统 CentOS Linux release 7.9.2009 (Core) 2 docker Docker version 20.10.6 3 docker-compose docker-compose version 1.28.2 二、服务规划 序号 服务 名称 端口 1 zookeeper zookeeper 2181,2888,3888 2 ka…...
【python爬虫】利用代理IP爬取filckr网站数据
亮数据官网链接:亮数据官网...