python的制图

测试数据示例:

day	report_user_cnt	report_user_cnt_2	label
2023-10-01	3	3	欺诈
2023-10-02	2	4	欺诈
2023-10-03	6	5	欺诈
2023-10-04	2	1	正常
2023-10-05	4	3	正常
2023-10-06	4	4	正常
2023-10-07	2	6	正常
2023-10-08	3	7	正常
2023-10-09	3	12	正常
2023-10-10	8	1	正常
2023-10-12	5	2	正常
2023-10-13	6	3	欺诈
2023-10-14	2	4	欺诈
2023-10-15	7	5	欺诈
2023-10-16	9	12	欺诈
2023-10-17	6	15	欺诈
2023-10-18	6	5	欺诈
2023-10-19	5	6	1
2023-10-20	3	2	1
2023-10-21	1	5	1
2023-10-22	1	5	1
2023-10-23	2	5	1
2023-10-24	3	5	1
2023-10-25	1	5	1
2023-10-26	2	5	0
2023-10-28	1	5	0

1、柱形图

plt.bar: 是 Matplotlib 库中用于绘制柱状图的函数之一,它可以接受多组数据作为输入,每组数据可以包含 x 轴和 y 轴的坐标值。

plt.bar() 函数的常用参数如下
x:x 轴的标签,可以是一个数组、列表或者 Series 对象。
height:每个柱子的高度,可以是一个数组、列表或者 Series 对象。
width:每个柱子的宽度,可以是一个数字或者一个数组,如果是一个数组,则每个柱子的宽度可以不同。
color:柱子的颜色,可以是字符串(如 ‘red’)或者 RGB 值(如 (0.1, 0.2, 0.5))。
edgecolor:柱子边缘的颜色,可以是字符串或者 RGB 值。
linewidth:柱子边缘的宽度,可以是一个数字。
tick_label:x 轴的刻度标签,可以是一个数组、列表或者 Series 对象。
align:柱子的对齐方式,可以是 ‘center’、‘edge’ 或者 ‘tip’。
alpha:柱子的透明度,可以是一个 0 到 1 之间的数字。

代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取数据
d = pd.read_csv('test.csv', sep = '\t')
x = d['label']
num_fraud = np.sum(d['label'] == 1)
num_normal = np.sum(d['label'] == 0)

plt.bar(['Fraud', 'Normal'], [num_fraud, num_normal], color='dodgerblue')
plt.ylabel('num')
plt.xlabel('label')
plt.title('diff label sample count')
plt.show()

在这里插入图片描述

2、折线图

plt.plot 包含的参数有哪些?
x: x 轴坐标值,可以是一个数组、列表或者 Series 对象。
y : y 轴坐标值,可以是一个数组、列表或者 Series 对象。
color: 折线的颜色,可以是字符串(如 ‘red’)或者 RGB 值(如 (0.1, 0.2, 0.5))。
linestyle: 折线的样式,可以是字符串(如 ‘–’)或者一个包含实线、虚线等样式的元组。
linewidth: 折线的宽度,可以是一个数字。
marker: 数据点的标记样式,可以是字符串(如 ‘o’)或者一个包含圆形、正方形等样式的元组。
markersize: 数据点的大小,可以是一个数字。
label: 折线的标签,用于图例中显示。
alpha : 折线的透明度,可以是一个 0 到 1 之间的数字。

代码:
1)折线图展示单条数据

import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取数据
d = pd.read_csv('test.csv', sep = '\t')
x = d['day']
y = d['report_user_cnt']

plt.figure(figsize=(14, 5))
plt.plot(x, y, c='dodgerblue', lw=3)
plt.title('report_user_cnt')
plt.ylabel('report_user_cnt')
plt.xlabel('day')
plt.show()

在这里插入图片描述
2)展示多条数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取数据
d = pd.read_csv('test.csv', sep = '\t')
x = d['day']
y1 = d['report_user_cnt']
y2 = d['report_user_cnt_2']

plt.figure(figsize=(14, 5))
plt.plot(x, y1, c='dodgerblue', lw=3, label = "num2")
plt.plot(x, y2, c='red', label = "num1")
plt.title('report_user_cnt')
plt.ylabel('report_user_cnt')
plt.xlabel('day')
plt.legend()
plt.show()

在这里插入图片描述

3)散点图

plt.scatter是绘制散点图
x : x坐标
y : y坐标
s : 散点的大小
c : 点的颜色
marker :点的标记形状
alpha:散点的透明度
label : 散点图的标签

import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.scatter(np.random.rand(100), # 随机产生0-1之间的100个随机数
                np.random.rand(100),
                alpha=0.7,
                marker= 'o',
                c= 'b',
                label= 'mae')
plt.title('Reconstruction MAE')
plt.ylabel('Reconstruction MAE')
plt.xlabel('Index')
plt.show()

在这里插入图片描述

4)创建子图

plt.subplot()是Matplotlib库中用于创建子图的函数,
它的参数有三个,分别是
plt.subplot(nrows, ncols, index)
其中,nrowsncols表示子图网格的行数和列数,
index表示当前子图的位置。
比如plt.subplot(221)表示将当前子图设置为一个2行2列的网格中的第1个子图。
如果nrowsncols的值都小于10,则可以将它们组合成一个两位数的整数,比如plt.subplot(221)表示将当前子图设置为一个2行2列的网格中的第1个子图。
如果nrowsncols的值大于等于10,则需要使用三位数的整数来表示子图位置,比如plt.subplot(2, 2, 1)表示将当前子图设置为一个2行2列的网格中的第1个子图。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取数据
d = pd.read_csv('test.csv', sep ='\t')
x = d['day']
y1 = d['report_user_cnt']
y2 = d['report_user_cnt_2']

plt.figure(figsize=(14, 5))
plt.subplot(211)
plt.plot(x, y1, c='dodgerblue', linestyle='-', lw=3, label = "num2")

plt.ylabel('report_user_cnt')
plt.xlabel('day')
plt.legend()

plt.subplot(212)
plt.plot(x, y2, c='red',marker='.',  label = "num1")
plt.ylabel('report_user_cnt_2')
plt.xlabel('day')
plt.legend()

plt.show()

在这里插入图片描述

5) python的高级绘图plotly.express

1、绘制直方图

plotly.express库是一个基于plotly库的高级API,它可以让用户轻松地创建各种数据可视化图表,包括散点图、直方图、热力图、等高线图等。通过简单的函数调用,用户可以快速地生成各种图表,并进行自定义设置。此外,plotly.express还支持各种交互式功能,比如缩放、平移、旋转、悬停等,可以让用户更加方便地探索和分析数据。

import plotly.express as px 
df['anomaly'] = df['label'].apply(lambda x: 'outlier' if x==-1  else 'inlier') 
# px.histogram()函数创建直方图,统计每个分数对应的样本个数
fig = px.histogram(df,x='scores',color='anomaly') 
fig.show()

在这里插入图片描述

histogram可以根据标签列表,分组后统计每个标签的个数,十分方便

import plotly.express as px
import pandas as pd

df = pd.read_csv('test.csv', sep ='\t')

# px.histogram()函数创建直方图
fig = px.histogram(df,x='label',color='label', range_x = [0,3], opacity = 0.8, title = "标签分布")

fig.update_layout(
    title={
        'text': "标签分布",
        'y':0.95,
        'x':0.5,
        'xanchor': 'center',
        'yanchor': 'top'})

fig.show()

在这里插入图片描述

px.histogram()是Plotly Express中的直方图函数,用于绘制一维数据的分布情况。它的常用参数如下:
data_frame: 数据框,包含要绘制的数据。
x: 要绘制的数据列名或者数据列表。
nbins: 直方图的箱子数量,可以是整数或者字符串(如“sturges”、“fd”、“sqrt”等)。
range_x: 要绘制的数据的范围,可以是一个元组或列表,如(0, 10)。
color: 按照某个列对数据进行分组,每组用不同的颜色绘制。
opacity: 直方图的透明度,取值范围为0-1。
barmode: 直方图的模式,可以是“overlay”(默认)、“stack”或“group”。
title: 直方图的标题。

2、创建一个3D散点图

import plotly.express as px
import pandas as pd
df = pd.read_csv('test.csv', sep ='\t')
fig = px.scatter_3d(df,x='petal width (cm)', 
                       y='sepal length (cm)', 
                       z='sepal width (cm)', 
                       color='anomaly') 
fig.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/209147.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jetpack compose——圆角、渐变

一、背景圆角、渐变 效果图: 代码为: Box(modifier Modifier.clip(RoundedCornerShape(14.dp)) // 设置圆角半径.background(brush Brush.horizontalGradient( // 设置渐变色listOf(Color(0xFFF5DEC9),Color(0xFFF7A74C),))).constrainAs(box_bottom…

杨志丰:OceanBase助力企业应对数据库转型深水区挑战

11 月 16 日,OceanBase 在北京顺利举办 2023 年度发布会,正式宣布:将持续践行“一体化”产品战略,为关键业务负载打造一体化数据库。OceanBase 产品总经理杨志丰发表了《助力企业应对数据库转型深水区挑战》主题演讲。 以下为演讲…

【el-form】表单label添加?及tooltip

<el-form-item><span slot"label"><el-tooltip :content"tooltip提示框内容" placement"top"><i class"el-icon-question"></i></el-tooltip>{{ $t(menu.status) }}</span><el-radio-gr…

【1】基于多设计模式下的同步异步日志系统

1. 项目介绍 本项⽬主要实现⼀个⽇志系统&#xff0c; 其主要⽀持以下功能: • ⽀持多级别⽇志消息 • ⽀持同步⽇志和异步⽇志 • ⽀持可靠写⼊⽇志到控制台、⽂件以及滚动⽂件中 • ⽀持多线程程序并发写⽇志 • ⽀持扩展不同的⽇志落地⽬标地 2. 开发环境 • CentOS 7 • vs…

(C++)有效三角形的个数--双指针法

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://le…

旋转立方体.html(网上收集5)

<!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>旋转立方体</title><style>#cube {width: 200px;height: 200px;position: relative;transform-style: preserve-3d;animation: rotate 6s infinite linear;mar…

开发问题记录

开发问题记录&#x1f4dd; vant组件开发相关问题 vant开发的组件库初次渲染没问题,只要跳转至其他页面再进来设置的label-align属性就会丢失不生效 原因: 进入其他页面加载了主项目的vant库的css优先级层级高,然后就把组件本身的样式覆盖了, ​​​​ 解决思路: 使用渗透把主…

兼容jlink OB arm仿真器使用(杜邦线过长导致烧写总是失败)

一、兼容jlink OB的使用&#xff1a; 1、设置中要选择jlink&#xff1b; 2、模式选择SWD模式&#xff08;接三根线&#xff09;&#xff1b; 二、杜邦线过长导致stm32的stlink烧写总是失败 用ST-link烧写提示的错误信息有&#xff1a; Error while accessing a target reso…

蓝桥杯day03——Bigram 分词

1.题目 给出第一个词 first 和第二个词 second&#xff0c;考虑在某些文本 text 中可能以 "first second third" 形式出现的情况&#xff0c;其中 second 紧随 first 出现&#xff0c;third 紧随 second 出现。 对于每种这样的情况&#xff0c;将第三个词 "th…

argparse.ArgumentParser() 用法解析cmd命令行选项、参数

一、简介 1、argparse 是一个 Python 模块&#xff1a;命令行选项、参数和子命令解析器。 2、argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数&#xff0c;然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和…

三相交流电子负载的应用

三相交流电子负载可以模拟各种类型的负载&#xff0c;如电阻、电感、电容等&#xff0c;三相交流电子负载广泛应用于电力系统、工业自动化、新能源等领域&#xff0c;具有很高的实用价值。 在电力系统中&#xff0c;三相交流电子负载可以用于测试和调试电力设备。例如&#xff…

java原子类型

AtomicBoolean AtomicInteger AtomicLong AtomicReference<V> StringBuilder - 不是原子类型。StringBuilder 是 java.lang 包下的类 用法&#xff1a;无需回调改变数值

stm32项目中重定向printf打印不出来东西?三种解决方案

项目场景&#xff1a; 在stm32项目中为了调试将某些参数打出来&#xff0c;重定向printf 问题描述 printf打印不出东西 缓冲区满了才打印出来 原因分析&#xff1a; 使用printf函数必须等到缓冲区满或程序结束时&#xff0c;才进行写入到屏幕 解决方案&#xff1a; 解决方…

基于若依的ruoyi-nbcio流程管理系统仿钉钉流程初步完成转bpmn设计(还有bug,以后再修改)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 今天初步完成仿钉钉流程转bpmn设计的工作&#xff0c;当然还有不少bug&#xff0c;以后有需要或者网友也帮…

geoserver 发布图层(tif、shp等)

我们用得最多的是这个板块的内容 下面我们来尝试发布地图。点击【数据】——【工作区】——【添加新的工作区】&#xff0c;工作区可以理解为是用来存放发布地图的一个集合。 在【新建工作区】中输入名称&#xff0c;还有一个命名空间URI&#xff0c;这个只要保持和之前的工作区…

Elementplus遇到的问题

问题1&#xff1a; el-upload 手动上传图片&#xff0c;&#xff0c;上传之后&#xff0c;&#xff0c;el-upload 中插槽的图片无法显示&#xff0c;&#xff0c;&#xff0c;官网也是无法显示 手动上传图片&#xff0c;&#xff0c;&#xff0c;返回图片的url&#xff0c;&…

Unity中Shader指令优化(编译后指令解析)

文章目录 前言一、我们先创建一个简单的Shader二、编译这个Shader&#xff0c;并且打开1、编译后注意事项2、编译平台 和 编译指令数3、顶点着色器用到的信息4、顶点着色器计算的核心部分5、片元着色器用到的信息6、片元着色器核心部分 前言 我们先读懂Shader编译后代码&#…

加强网站稳定性!学习如何进行高效压力测试!

前言 1、什么是压力测试&#xff1f; 软件压力测试是一种基本的质量保证行为&#xff0c;它是每个重要软件测试工作的一部分。 软件压力测试的基本思路很简单&#xff1a;不是在常规条件下运行手动或自动测试&#xff0c;而是在计算机数量较少或系统资源匮乏的条件下运行测试…

红队攻防实战之某商城Getshell

此后如竟没有炬火&#xff0c;我便是唯一的光 信息收集 端口扫描 nmap -T4 -A -p 1-65535 可以看到目标系统开放22、80、888、3306、8800端口 敏感文件扫描 http:///admin/login.html 后台登陆地址泄露 漏洞挖掘 phpinfo信息泄露 phpinfo信息泄露&#xff0c;此站为Linu…

如何使用windows Terminal终端连接远程Linux服务器

近接触到了zsh这个shell&#xff0c;所以在ubuntu系统上反复折腾&#xff0c;终于在ubuntu-desktop系统上使用oh-my-zsh和powerlevel10k配置好了一个比较好看的终端&#xff08;个人认为挺好看&#xff0c;勿喷&#xff09;。 但是在从windwos的Mobaxterm登录ubuntu查看时&…