python画图matplotlib_Python:使用matplotlib画图

本文详细介绍了使用Matplotlib进行绘图的方法,包括图层概念、常用绘图命令及参数设置。通过实例展示了如何创建和定制图表,如设置坐标轴、标题、图例,以及调整线型、颜色等。

Matplotlib的图层:

1、Canvas层 画布层 位于最底层,用户一般接触不到。 matplotlib.pyplot就是一个canvas层

2、Figure层 图像层 建立在Canvas之上。 plt.figure()就是一个figure层

3、Axes层 坐标层 建立在Figure之上。fig.add_axes(ax)就加一个Axes层ax在figure上,这时就可以画出一个空白的坐标了。

4、plot层 绘制层 坐标轴、图例等辅助信息层以及图像层都是建立在Axes之上

作为线性图的替代,可以通过向 plot() 函数添加格式字符串来显示离散值。 可以使用以下格式化字符。

作图

import numpy as np

from matplotlib import pyplot as plt, ticker

def getChart():

# 斜线图

x = np.arange(0,10)

y = [1,2,3,4,5,6,7,8,9,0]

plt.title("Matplotlib demo")

plt.xlabel("X axis caption")

plt.ylabel("Y axis caption")

#linewidth控制线的粗细,ms控制点的大小

plt.plot(x,y,'r.-',linewidth=2,ms=5)

#画横线

plt.hlines(5, 10, 1, colors='c', linestyles='dashed')

#画竖线

plt.vlines(5, 8, 1, colors='c', linestyles='dashed')

#设置刻度线

plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(1))

#设置刻度线显示样式

plt.gca().xaxis.set_major_formatter(ticker.FormatStrFormatter('%1.1f'))

plt.show()

if __name__ == '__main__':

getChart()

QQ截图20190602153750.png

1、设置坐标轴范围

plt.xlim(0.5, 5.5)

plt.ylim(0.5, 1.0)

2、设置标题

plt.title("aaaaa")

3、设置横纵坐标名称

plt.xlabel('x label')

plt.ylabel('y label')

4、设置横坐标刻度值,当刻度值不够写时,倾斜

plt.xticks(np.arange(1, 10))

plt.xticks(rotation=45)

5、导出图片

iconPath =" /aaa/ddd"

plt.savefig('{}/sd.jpg'.format(iconPath))

6、设置图片大小和像素

plt.rcParams['figure.figsize'] = (6.4, 4.8)

plt.rcParams['savefig.dpi'] = 60

7、画横线

plt.axhline(y=CL, c="lightgray",label="CL", ls="--", lw=2)

注释:

y:横线的出发点

c:横线的线条颜色

label:横线的名称

ls:横线的线条风格

lw:横线的线条宽度

8、画竖线

plt.axvline(x=CL, c="lightgray",label="m line", ls="--", lw=1)

注释:

x:竖线的出发点

c:竖线的线条颜色

label:竖线的名称

ls:竖线的线条风格

lw:竖线的线条宽度

9、设置图例

plt.legend(bbox_to_anchor=(0.2, 1.02), loc=3,ncol=3, borderaxespad=0,edgecolor='w')

10、设置横纵坐标刻度间隔

plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(1))

plt.gca().yaxis.set_major_locator(ticker.MultipleLocator(0.2))

11、设置分辨率

plt.rcParams['figure.dpi'] = 300

12、设置双y轴

plt.twinx()

13、将坐标刻度显示自己想显示的东西

# 设置y刻度:用文字来显示刻度

plt.yticks([-2, -1.8, -1, 1.22, 3], ['really bad', 'bad', 'normal', 'good', 'really good'])

14、设置图例

plt.legend(bbox_to_anchor=(0.4, 1.02), loc=3, ncol=3, borderaxespad=0, edgecolor='w', mode="expand")

# 还有控制位置的重要参数:bbox_to_anchor(num1, num2), bbox_to_anchor被赋予的二元组中,第一个数值用于控制legend的左右移动,值越大越向右边移动,第二个数值用于控制legend的上下移动,值越大,越向上移动。

15、设置透明度

alpha=0.5

#范围在0~1之间

基于 NSFW Model 色情图片识别鉴黄 后面更新视频检测 项目背景: 随着互联网的快速发展,网络上的信息量呈现出爆炸式的增长。然而,互联网上的内容良莠不齐,其中不乏一些不良信息,如色情、暴力等。这些信息对青少年的健康成长和社会风气产生了不良影响。为了净化网络环境,保护青少年免受不良信息的侵害,我国政府加大了对网络内容的监管力度。在此背景下,本项目应运而生,旨在实现对网络图片和视频的自动识别与过滤,助力构建清朗的网络空间。 项目简介: 本项目基于 NSFW(Not Safe For Work)Model,利用深度学习技术对色情图片进行识别与鉴黄。NSFW Model 是一种基于卷积神经网络(CNN)的图像识别模型,通过学习大量的色情图片和非色情图片,能够准确地判断一张图片是否含有色情内容。本项目在 NSFW Model 的基础上,进一步优化了模型结构,提高了识别的准确率和效率。 项目功能: 色情图片识别:用户上传图片后,系统会自动调用 NSFW Model 对图片进行识别,判断图片是否含有色情内容。如果含有色情内容,系统会给出相应的提示,并阻止图片的传播。 视频检测:针对网络视频,本项目采用帧提取技术,将视频分解为一帧帧图片,然后使用 NSFW Model 对这些图片进行识别。如果检测到含有色情内容的图片,系统会给出相应的提示,并阻止视频的传播。 实时监控:本项目可应用于网络直播、短视频平台等场景,实时监控画面内容,一旦检测到含有色情内容的画面,立即进行屏蔽处理,确保网络环境的纯洁。
### 如何在本地部署 NSFW 模型或服务 要在本地环境中成功部署 NSFW(不适宜工作场合内容)检测模型或服务,以下是详细的说明: #### 准备环境 为了确保能够顺利运行模型和服务,需要安装必要的依赖项。这些工具和库包括但不限于以下几类: - **Python 环境**: 推荐使用 Python 3.7 或更高版本。 - **Transformers 库**: 提供加载预训练模型的功能[^1]。 - **PyTorch/TensorFlow**: 支持深度学习框架的计算需求。 - **Pillow (PIL)**: 处理图像文件并将其转换为适合输入模型的形式。 具体命令如下所示: ```bash pip install transformers torch Pillow ``` #### 加载模型与测试 通过 Hugging Face 的 `transformers` 工具包可以直接访问已有的 NSFW 图片分类模型。例如,可以采用名为 `"Falconsai/nsfw_image_detection"` 的公开模型来完成此任务[^1]。 下面是一个简单的代码片段展示如何加载该模型并对单张图片执行预测操作: ```python from PIL import Image from transformers import pipeline def classify_nsfw(image_path): # 打开指定路径下的图片文件 img = Image.open(image_path) # 初始化 image-classification 流水线对象,并指明使用的特定模型名称 classifier = pipeline("image-classification", model="Falconsai/nsfw_image_detection") # 对传入的图片调用流水线方法得到其类别标签及其置信度分数列表形式的结果 result = classifier(img) return result if __name__ == "__main__": test_img_path = "<your_test_image>" output_results = classify_nsfw(test_img_path) print(output_results) ``` 注意替换 `<your_test_image>` 成实际存在的图片绝对或者相对地址字符串值之前再尝试运行以上脚本。 #### 构建 RESTful API 服务 如果希望进一步扩展功能至 Web 应用程序层面,则可考虑利用 Flask/Django 这样的轻量级 web 开发框架构建起支持 HTTP 请求交互的服务端接口。这里给出基于 FastAPI 实现的一个简单例子作为示范用途: ```python import uvicorn from fastapi import FastAPI, File, UploadFile from PIL import Image from io import BytesIO from typing import List from pydantic import BaseModel app = FastAPI() class Prediction(BaseModel): label: str score: float @app.post("/predict/", response_model=List[Prediction]) async def predict(file: UploadFile = File(...)): try: contents = await file.read() pil_image = Image.open(BytesIO(contents)) clf_pipeline = pipeline('image-classification', model='Falconsai/nsfw_image_detection') predictions = clf_pipeline(pil_image) formatted_preds = [{"label": pred['label'], "score": round(pred['score'], 4)} for pred in predictions] return formatted_preds except Exception as e: raise ValueError(f"Error processing uploaded file {e}") if __name__ == '__main__': uvicorn.run(app, host='0.0.0.0', port=8000) ``` 启动服务器之后即可向 `/predict/` 路径发送 POST 请求附带上传待分析的目标图片获取返回结果了。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值