百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Matplotlib画图还能加JK制服美女骚操作秀翻全场

toyiye 2024-06-21 11:54 12 浏览 0 评论

目录

1.隔段的bar绘图

2.显示中文字符的曲线绘制

3.需要注意的内容

4.Matplotlib.pyplot之网格线设置

5.绘制散点分布图

6.调整图像和坐标轴大小与位置

7.barh绘制横状图

8.给坐标系添加自定义背景

matplotlib是一个用于创建出版质量图表的桌面绘图包(主要是2D方面),是 Python 的绘图库。一款强大的绘图功能,使得能够制作各种花式的图和表。

本文以8个案例,简要呈现效果的方式,介绍如何对数据进行操作,进而绘制出更加丰富多彩,易看易用的统计图来。

后面的学习中,将以图示和代码为主,相信看到展示出来的结果图,比任何一种语言描述,都更能打动你。如果你觉得对你有帮助,麻烦点赞、评论加关注,我们持续更新学习。

1.隔段的bar绘图

# E-mail:1763469890@qq.com
# 微信公众号:CV初学者

import os
from matplotlib import pyplot as plt

def num_count(input_path):
    body_name=['abdomen','chest','hand','knee','foot','pelvis','shoulder']
    body_num=[249,1542,704,527,761,247,176]

    bar_width = 0.3
    valid_num=[49,162,138,100,150,67,54]
    fig = plt.figure(figsize=(8, 4))
    plt.title("classes_CountNumber")
    plt.xlabel("classes")
    plt.ylabel("count_number")
    plt.bar(body_name, body_num,width=0.5, label="train",align='center')
    
    plt.bar(body_name , valid_num, width=0.5, label="valid", align="center")
    # 添加数据标签
    for a, b in zip(body_name, body_num):
        plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)
    for a, b in zip(body_name, valid_num):
        plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)

    # 添加图例
    plt.legend()
    plt.savefig("class_number.png")
    plt.show()

if __name__ == "__main__":
    input_path = r"F:\image_gen/"
    num_count(input_path)

结果展示:

2.显示中文字符的曲线绘制

# E-mail:1763469890@qq.com
# 微信公众号:CV初学者

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei','Times New Roman'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False

x1=range(1,9)
y1=[0.3, 1, 0.1, 1.3, 3, 1, 0.4, 2.5]

x2=range(1,9)
y2=[10.25, 0.1, 1.86, 4.7, 1, 3.2, 4.67, 3]

x3=range(1,9)
y3=[0.36, 3.35, 3.24, 3.27, 0.93, 0.5, 5.33, 0.23]

#plt.plot(x1,y1,label='x truth line',linewidth=3,color='r',marker='o', markerfacecolor='blue',markersize=12)
plt.plot(x1,y1,label='y P4P 误差曲线')
plt.plot(x2,y2,label='y DL 3 误差曲线')
plt.plot(x3,y3,label='y DL 4 误差曲线')

plt.xlabel('序号',fontsize=15)
plt.ylabel('y 误差值',fontsize=15)
plt.title('y 误差值对比',fontsize=15)
plt.legend()
plt.show()

结果展示:

技能添加:python画图x轴文字斜着:

plt.xticks(rotation=70) # 倾斜70度

结果展示:

参考:https://blog.csdn.net/Caiqiudan/article/details/107876499

3.需要注意的内容

注意新绘制图的时候,加上plt.figure(),否则会出现如下的错误

加上plt.figure()之后,完整代码如下(两个图在一起的,前面有,就不赘述了,相信你明白)

def draw_png(list_x,list_y,name):
    plt.figure()
    plt.plot(list_x, list_y, label=name)

    plt.xlabel("epoch")
    plt.ylabel(name)
    # plt.title("ROC")
    plt.legend(loc="upper right")
    plt.savefig(r"./records/" + name + ".png")

结果就正常了,如下

下面是完整代码:

import numpy as np
import matplotlib.pyplot as plt

doctor_means = (0.914,0.86,0.832,0.884,0.886,0.953)
ai_means = (0.924,0.884,0.908,0.93,0.935,0.953)

ind = np.arange(len(doctor_means))  # the x locations for the groups
width = 0.15  # the width of the bars

fig, ax = plt.subplots(figsize=(10, 8))
rects1 = ax.bar(ind - width / 2, doctor_means, width, color='SkyBlue', label='doctor')
rects2 = ax.bar(ind + width / 2, ai_means, width, color='IndianRed', label='doctor+AI')

# 为每个条形图添加数值标签
for x1,y1 in enumerate(doctor_means):
    plt.text(x1-0.1, y1, y1,ha='center',fontsize=10)
for x2,y2 in enumerate(ai_means):
    plt.text(x2+0.1, y2, y2,ha='center',fontsize=10)

# Add some text for labels, title and custom x-axis tick labels, etc.
ax.set_xlabel('evaluation_idex')
ax.set_title('Radiologists vs Radiologists+AI')
plt.xticks(ind, ('A_Accuracy','A_Sensitivity','B_Accuracy', 'B_Sensitivity','C_Accuracy', 'C_Sensitivity'))
ax.legend()
#plt.xticks(rotation=20)
ax.autoscale(tight=True)
plt.ylim(0, 1.05)
plt.show()

4.Python绘图库Matplotlib.pyplot之网格线设置(plt.grid())

# E-mail:1763469890@qq.com
# 微信公众号:CV初学者

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei', 'Times New Roman']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False

x1 = range(1, 9)
y1 = [0.3, 1, 0.1, 1.3, 3, 1, 0.4, 2.5]

x2 = range(1, 9)
y2 = [10.25, 0.1, 1.86, 4.7, 1, 3.2, 4.67, 3]

x3 = range(1, 9)
y3 = [0.36, 3.35, 3.24, 3.27, 0.93, 0.5, 5.33, 0.23]

# plt.plot(x1,y1,label='x truth line',linewidth=3,color='r',marker='o', markerfacecolor='blue',markersize=12)
plt.plot(x1, y1, label='y P4P 误差曲线')
plt.plot(x2, y2, label='y DL 3 误差曲线')
plt.plot(x3, y3, label='y DL 4 误差曲线')

plt.xlabel('序号', fontsize=15)
plt.ylabel('y 误差值', fontsize=15)
plt.title('y 误差值对比', fontsize=15)
plt.legend()
#################################
plt.grid(linestyle='-.')
#################################
plt.show()

结果展示:

参考文章:https://blog.csdn.net/weixin_41789707/article/details/81035997

5.绘制散点分布图

# 绘制散点图

import numpy as np
import matplotlib.pyplot as plt
import csv

list_score = []
csvfile = r'F:\stage2_DR_TB\778_class_score.csv'

with open(csvfile, 'r', encoding='gbk') as f:
    # TODO
    # 使用csv.DictReader读取文件中的信息
    reader = csv.DictReader(f)
    for rows in reader:
        classes = rows['class']
        score = rows['score']
        print(classes, score)
        if classes == "0":
            list_score.append(round(float(score), 2))
x=[]
for i in range(len(list_score)):
    x.append(i)
y = list_score
print(x)
print(y)

plt.figure(figsize=(8, 5))
plt.ylim(0, 1)
plt.scatter(x, y)
plt.title("778TN train twoClass"+str(arr_mean)+"±"+str(arr_std))
# 添加图例
plt.legend()
plt.grid(linestyle='-.')

plt.show()

6.调整图像和坐标轴大小与位置

    fig = plt.figure(figsize=(16, 9))
    fig.subplots_adjust(left=0.05, right=0.95, bottom=0.25, top=0.95, wspace=0.05, hspace=0.05)
    plt.bar(x_list, y_list, width=0.5, label="label", align='center')
    for a, b in zip(x_list, y_list):
        plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)
    print(len(x_list))
    print(x_list)
    plt.xlabel('class', fontsize=15)
    plt.xticks(rotation=90)  # 倾斜70度
    plt.title('lesion num', fontsize=15)
    plt.legend()
    plt.grid(linestyle='-.')
    #plt.savefig("loss.png")
    plt.show()

结果展示:

7.barh绘制横状图

import matplotlib.pyplot as plt

plt.figure(figsize=(8, 4))

x_list=['beijing','nanjing','guangzhou','shenzhen','shanghai','hefei']
y1_list=[15,23,60,32,5,6]
y2_list=[12,20,30,16,2,3]
plt.barh(x_list, y1_list, label='predict',height=0.9)
plt.barh(x_list, y2_list, label='accurate',height=0.9)
plt.legend()
plt.title("barh")
plt.show()

结果展示:

8.给坐标系添加“自定义背景”

import matplotlib.pyplot as plt

img = plt.imread(r"E:\temp\image\image.jpg")
fig, ax = plt.subplots()
ax.imshow(img, extent=[1, 80, 1, 60])

x_list=[10,20,30,40,50,60]
y1_list=[15,23,60,32,5,6]
y2_list=[12,20,30,16,2,3]
plt.barh(x_list, y1_list, label='predict',height=3.9)
plt.barh(x_list, y2_list, label='accurate',height=3.9)

plt.legend()
plt.title("image_plot")
plt.show()

结果展示:


最后,喜欢就给个大大的赞吧。小白回归,希望继续和大家一起学习,这段时间积攒了很多知识总结,容我娓娓道来。加油!!!

往期回顾

  1. Python 100题(一)万事开头难,3小题过把瘾
  2. Python 100题(二)input 、list、tuple和class应用基础
  3. Python 100题(三)加油,连续更新的第三天,转行点滴开始
  4. Python基础精炼点(一):这8个小点,可都是工作、面试常见题
  5. Python基础精炼点(二):数据类型之数值型、字符型和容器型

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码