matplotlib科研绘图之折线图、柱状图、散点图、误差棒

 matplotlib折线图例子1

# -*- coding: utf-8 -*-
# @Time    : 2023/12/19 10:56
# @Author  : 长沙有肥鱼
# @FileName: 21.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/weixin_53660567?spm=1010.2135.3001.5343

# 导入Matplotlib库
import matplotlib
import matplotlib.pyplot as plt

# 设置中文显示
matplotlib.rcParams['font.sans-serif'] = ['SimSun']  # 用宋体显示中文

# 数据
x = [25, 27.5, 31.5, 34]
y1 = [1.138, 1.242, 1.345, 1.428]
y2 = [1.260, 1.363, 1.465, 1.562]
y3 = [1.154, 1.271, 1.393, 1.464]
y4 = [1.170, 1.253, 1.373, 1.454]
y5 = [1.230, 1.313, 1.404, 1.504]

# 绘制折线图,每个数据集使用不同的标记、颜色和线型
plt.plot(x, y1, marker='*', ms=13, label="case 1", markerfacecolor='#FF0000',
         markeredgecolor='#FF0000', linestyle='-', linewidth=2.5, color='#FF0000')
plt.plot(x, y2, marker='D', ms=9, label="case 2", markerfacecolor='#FF9900',
         markeredgecolor='#FF9900', linestyle='-', linewidth=2.5, color='#FF9900')
plt.plot(x, y3, marker='d', ms=10, label="case 3", markerfacecolor='#0000FF',
         markeredgecolor='#0000FF', linestyle='-', linewidth=2.5, color='#0000FF')
plt.plot(x, y4, marker='v', ms=10, label="case 4", markerfacecolor='#00FF00',
         markeredgecolor='#00FF00', linestyle='--', linewidth=2.5, color='#00FF00')
plt.plot(x, y5, marker='o', ms=10, label="case 5", markerfacecolor='#FF00FF',
         markeredgecolor='#FF00FF', linestyle='-.', linewidth=2.5, color='#FF00FF')

# 设置x轴和y轴标签
plt.xticks(rotation=0, fontproperties='Times New Roman', fontsize=12)  # rotation=45
plt.yticks(rotation=0, fontproperties='Times New Roman', fontsize=12)
plt.xlabel("电压", fontsize=18)
plt.ylabel("电流", fontsize=18)

# 设置图表标题
plt.title("高压电站电压与电流的关系", fontsize=18)

# 更新图例字体大小和样式
plt.rcParams.update({'font.size': 15})
plt.legend(loc="upper left", prop='Times New Roman', fontsize=25, ncols=2, edgecolor='#C4C4C4',
           facecolor='white', fancybox=True, title_fontsize=25)

# 保存图表为图片文件
plt.savefig("21.png", dpi=1800)

# 显示图表
plt.show()

 matplotlib折线图例子2

import matplotlib.pyplot as plt
# import numpy as np

y1 = [2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
y2 = [3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]
x = range(18, 31)

# 设置图形大小
plt.figure(figsize=(20, 7))

plt.plot(x, y1, label="自己本年度谈的对象数量", marker='D', markersize=10, markerfacecolor='cyan',
         markeredgecolor='cyan', color='cyan', linestyle='-', linewidth=3)
plt.plot(x, y2, label="同桌本年度谈的对象数量", marker='*', markersize=15, markerfacecolor='#FF0000',
         markeredgecolor='#FF0000', color='#FF0000', linestyle='--', linewidth=3)

# 设置x轴刻度
_xticks_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, _xticks_labels, fontproperties='SimSun', fontsize=22)
plt.yticks(range(0, 9), fontproperties='Times New Roman', fontsize=22)

# 绘制网格
plt.grid(alpha=0.2)
plt.rcParams.update({'font.size': 20})  # 图例大小设置
plt.legend(prop='SimSun', fontsize=25, loc='best',  ncols=2, edgecolor='#C4C4C4',
           facecolor='white', fancybox=False, title_fontsize=25)  # 图例设置
plt.xlabel("年龄", fontsize=25, fontproperties='SimSun')  # x轴标签
plt.ylabel("对象数量", fontsize=25, fontproperties='SimSun')  # y轴标签

# 设置图表标题
plt.title("年龄与对象数量的关系", fontproperties='SimSun', fontsize=30)
# 显示图形
plt.savefig("D://matplotlib画图//学习//10.png", dpi=1200)
plt.show()

 marker设置

.:点(point marker)
,:像素点(pixel marker)
1:(tri_down marker)
2:(tri_up marker)
3:(tri_left marker)
4:(tri_right marker)
o:圆形(circle marker)
v:朝下三角形(triangle_down marker)
+:+号标记(plus marker)
x:x号标记(x marker)
D:菱形(diamond marker)
d:小型菱形(thin_diamond marker)
s:正方形(square marker)
p:五边星(pentagon marker)
*:星型(star marker)
h:1号六角形(hexagon1 marker)
H:2号六角形(hexagon2 marker)
|:垂直线形(vline marker)
_:水平线形(hline marker)
^:朝上三角形(triangle_up marker)
<:朝左三角形(triangle_left marker)
>:朝右三角形(triangle_right marker)

 color设置

legend()设置

def __init__(
    self, parent, handles, labels,
    *,
    loc=None,
    numpoints=None,      # 图例线中的点数
    markerscale=None,    # 图例标记相对于原始标记的相对大小
    markerfirst=True,    # 图例标记和标签的左/右排序
    reverse=False,       # 图例标记和标签的反向排序
    scatterpoints=None,  # 散射点数量
    scatteryoffsets=None,
    prop=None,           # 图例文本的属性
    fontsize=None,       # 关键字直接设置字体大小
    labelcolor=None,     # 关键字来设置文本颜色

    # 间距&填充定义为字体大小的一小部分
    borderpad=None,      # 图例边框内的空白
    labelspacing=None,   # 图例条目之间的垂直间距
    handlelength=None,   # 图例手柄的长度
    handleheight=None,   # 图例手柄的高度
    handletextpad=None,  # 图例手柄和文本之间的填充
    borderaxespad=None,  # 轴和图例边框之间的填充
    columnspacing=None,  # 柱间距

    ncols=1,     # 列数
    mode=None,  # 列的水平分布:无或“展开”

    fancybox=None,  # True:花式框,False:圆形框,None:rcParam
    shadow=None,
    title=None,           # 图例标题
    title_fontsize=None,  # 图例标题字体大小
    framealpha=None,      # 设置帧alpha
    edgecolor=None,       # 边框补丁边缘颜色
    facecolor=None,       # 框架补丁面颜色

    bbox_to_anchor=None,  # 图例将锚定到的bbox
    bbox_transform=None,  # 为bbox转换
    frameon=None,         # 并条机
    handler_map=None,
    title_fontproperties=None,  # 图例标题的属性
    alignment="center",       # 控制图例框内的对齐
    ncol=1,  # ncols的同义词(向后兼容性)
    draggable=False  # 是否可以用鼠标拖动图例
):

  matplotlib条形图例子1

import matplotlib.pyplot as plt

a = ["战狼2", "速度与激情8", "功夫瑜伽", "西游伏妖篇", "变形金刚5:最后的骑士",
     "摔跤吧!爸爸", "加勒比海盗5:死无对证", "金刚:骷髅岛", "极限特工:终极回归",
     "生化危机6:终章", "乘风破浪", "神偷奶爸3", "智取威虎山", "大闹天竺",
     "金刚狼3:殊死一战", "蜘蛛侠:英雄归来", "悟空传", "银河护卫队2",
     "情圣", "新木乃伊"]
b = [56.01, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61,
     11.28, 11.12, 10.49, 10.3, 8.75, 7.55, 7.32, 6.99,
     6.88, 6.86, 6.58, 6.23]

plt.figure(figsize=(20, 10))

# 绘制条形图
plt.barh(range(len(a)), b, height=0.6, color='#FF6600')
plt.xticks(fontproperties='Times New Roman', fontsize=25)
plt.yticks(range(len(a)), a, fontproperties='SimSun', fontsize=15, rotation=45)
plt.xlabel("票房", fontsize=25, fontproperties='SimSun')  # x轴标签
plt.ylabel("电影名称", fontsize=25, fontproperties='SimSun')  # y轴标签

# 设置图表标题
plt.title("某年度电影票房排行榜", fontproperties='SimSun', fontsize=30)
# plt.legend(loc="upper left", prop='Times New Roman', fontsize=25, ncols=2, edgecolor='#C4C4C4',
#            facecolor='white', fancybox=True, title_fontsize=25)
plt.savefig("./14.png", dpi=1500)  # 保存图片
plt.show()

  matplotlib条形图例子2

import matplotlib.pyplot as plt

a = ["北京各区房价", "上海各区房价", "深圳各区房价", "鹤岗各区房价"]
b1 = [121000, 140885, 71219, 1948]
b2 = [148833, 116770, 106410, 2518]
b3 = [96384, 126999, 102957, 1720]
b4 = [88704, 121743, 58809, 1554]
b5 = [70884, 117869, 49275, 1239]
bar_width = 0.1

x1 = list(range(len(a)))
x2 = [i + bar_width for i in x1]
x3 = [i + bar_width * 2 for i in x1]
x4 = [i + bar_width * 3 for i in x1]
x5 = [i + bar_width * 4 for i in x1]

plt.figure(figsize=(20, 8))
plt.bar(range(len(a)), b1, width=bar_width, label="区1房价", color='#4A7EBB')
plt.bar(x2, b2, width=bar_width, label="区2房价", color='#FF6600')
plt.bar(x3, b3, width=0.1, label="区3房价", color='#00FF00')
plt.bar(x4, b4, width=0.1, label="区4房价", color='#C760FF')
plt.bar(x5, b5, width=0.1, label="区5房价", color='#02CCFE')

plt.rcParams.update({'font.size': 18})
plt.legend(prop='SimSun', fontsize=25)
plt.grid(alpha=0.5)
plt.xticks(x3, a, fontproperties='SimSun', fontsize=20)
plt.yticks(fontproperties='Times New Roman', fontsize=20)
plt.savefig("./15.png", dpi=1200)
plt.show()

matplotlib散点图例子

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimSun']
y1 = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17,
    18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22, 23]
y2 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17,
    20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]
x1 = range(1, 32)
x2 = range(51, 82)

# 设置图形大小
plt.figure(figsize=(20, 13))

plt.scatter(x1, y1, label="3月份", linewidth=10, color='#00FF00')
plt.scatter(x2, y2, label="10月份", linewidth=10, color='r')

# 调整x轴的刻度
_x = list(x1) + list(x2)
_xticks_labels = ["3月{}日".format(i) for i in x1]
_xticks_labels += ["10月{}日".format(i) for i in x2]

plt.xticks(_x[::3], _xticks_labels[::3], fontproperties='SimSun', rotation=45, fontsize=20)
plt.yticks(fontproperties='SimSun', fontsize=20)

# 添加图例
plt.legend(loc='upper left', fontsize=25)
# plt.grid(alpha=0.2)
# 添加描述信息
plt.xlabel("时间", fontproperties='SimSun', fontsize=25)
plt.ylabel("温度", fontproperties='SimSun', fontsize=25)
plt.title("气温与月份之间的关系", fontproperties='SimSun', fontsize=30, fontweight='bold')

plt.savefig("./12.png", dpi=1200)
plt.show()

 

 matplotlib误差棒例子

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Times New Roman'
# 平均收入, 波动范围
money = [20, 25, 18, 22, 17, 15]
tolerance_p = [2, 1, 3, 4, 2, 1]

index = np.arange(len(money))
width = 0.4
cities = ['北京', '上海', '广州', '深圳', '西安', '武汉']
# 绘制房价柱状图和收入柱状图
# yerr用来指定误差范围, 与结果图中的误差线对应
err_attr = {"elinewidth": 2, "ecolor": "black", "capsize": 5}  # 误差棒的属性

bar_money = plt.bar(index, money, width, color=['#66FF33', '#00FFFF', '#FF00FF', '#FF6600', '#9900CC', '#0000FF'],
                     yerr=tolerance_p, error_kw=err_attr)

plt.xlabel('城市名称', fontproperties='simsun', fontsize=16)
plt.ylabel('金额(万元)', fontproperties='simsun', fontsize=16)
plt.title('收入与偏差关系', fontproperties='simsun', fontsize=22)
plt.xticks(index, cities, fontproperties='simsun', fontsize=15)

# 创建图例
def add_text(bars, tol):
    for index, bar in enumerate(bars):
        x = bar.get_x() + width/2
        h = bar.get_height()
        # 在每个柱的误差线上下两侧显示文本, ha、va表示水平、垂直对其方式
        plt.text(x, h+tol[index], str(h+tol[index]), color='k', ha='center', va='bottom', fontsize=9)
        plt.text(x, h-tol[index]-1, str(h-tol[index]), color='w', ha='center', va='bottom', fontsize=9)

add_text(bar_money, tolerance_p)
plt.savefig("D://matplotlib画图//学习//8_1.png", dpi=1800)
plt.show()

 

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

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

相关文章

【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 快慢指针 移动零 class…

azkaban编译时报错的解决方案

大数据单机学习环境搭建(11)Azkaban单机部署&#xff0c;关于Azkaban和gradle下载&#xff0c;本文编译不限于单机solo模式。 一.大多数报错处理 1.1首先操作 1)安装 git yum install git -y 2)替换 azkaban 目录下的 build.gradle 文件的 2处 repositories 信息。改为 阿里…

LVS+Keepalived集群的介绍和搭建

目录 LVSKeepalived集群的介绍 Keepalived及其工作原理 Keepalived体系主要模块及其作用 一个合格的集群应该具备的特性 健康检查&#xff08;探针&#xff09;的方式 实验&#xff1a;搭建LVSKeepalived集群 实验准备 实验步骤 LVS 部署 配置节点服务器 实验验证 实…

vs code(Visual Studio Code)使用Remote SSH插件连接不上,反复输入密码

使用Remote SSH插件连接不上&#xff0c;反复输入密码问题解决分为两步 1&#xff0c;点击此处 可以得到配置文件的存放目录&#xff0c;进入硬盘这个目录 打开这个文件&#xff0c;知道你服务器的所在行ip&#xff0c;整行删掉&#xff0c;尝试再次连接 2&#xff0c;如果1不…

用户行为分析遇到的问题-ubantu16,hadoop3.1.3【更新中】

用户行为分析传送门 我的版本 ubantu16 hadoop 3.1.3 habse 2.2.2 hive3.1.3 zookeeper3.8.3 sqoop 1.46/1.47 我sqoop把MySQL数据往hbase导数据时候有问题 重磅&#xff1a;大数据课程实验案例&#xff1a;网站用户行为分析&#xff08;免费共享&#xff09; 用户行为分析-小…

32位MCU极致性价比高速风筒方案特点--【其利天下技术】

近年来&#xff0c;伴随着人们消费升级及现代工业技术水平的提升&#xff0c;电吹风市场已经步入了绿色节能、高效多功能化的发展阶段。人们对电吹风的需求和要求都在不断增加。然而&#xff0c;传统电吹风采用交流电机&#xff0c;使用寿命有限&#xff0c;维护不方便&#xf…

ctfshow(web171-web189)

目录 web171 web172 web173 web174 web175 web176 web177 web178 web179 web180 web181 web182 web183 web184 web185 web186 web187 web188 web189 web171 1 and 11 有结果 1 and 12 无结果 字符型注入点 1 order by 3 -- 正常 1 order by 4 -- 报错0 unio…

100G光模块可以插40G端口吗?

传统数据中心主要依托10G网络架构运营。然而&#xff0c;为了适应AI、深度学习、大数据计算等业务的大规模部署需求&#xff0c;下一代数据中心架构正在向25G/100G网络架构转型。在国内&#xff0c;我们已经看到BAT等互联网领军企业实现了这种高带宽网络架构的规模化部署。 构…

字节开源的netPoll多路复用器源码解析

字节开源的netPoll多路复用器源码解析 引言NetPollepoll API原生网络库实现netpoll 设计思路netpoll 对比 go net数据结构 源码解析多路复用池初始化Epoll相关API可读事件处理server启动accept 事件客户端连接初始化客户端连接建立 可读事件等待读取数据 可写事件处理客户端启动…

ADC Buffer数据格式和readDCA1000.m

参考文献 mmwave_sensor_raw_data_capture_using_dca1000_v02Mmwave Radar Device ADC Raw Data CaptureAWR18xx,16xx,14xx,68xx Technical Reference ManualADC Buffer中数据格式有两种,分别是: Interleaved data format (supported only in the 14xx) 按照采样的点数存放,…

深度卷积神经网络的剪枝方法

深度学习领域的一种剪枝技术是“网络瘦身&#xff08;Network Slimming&#xff09;”&#xff0c;这是一种旨在深度卷积神经网络&#xff08;CNN&#xff09;中实现通道级稀疏性的简单方案。该技术利用批量归一化中的放缩层来有效识别并修剪网络中不重要的通道。本文将详细介绍…

【Linux】进程状态、进程优先级和进程切换

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解冯诺依曼体系结构与操作系统&#xff0c;掌握…

C : DS二叉排序树之删除(详细思路解答)

Description 给出一个数据序列&#xff0c;建立二叉排序树&#xff0c;并实现删除功能 对二叉排序树进行中序遍历&#xff0c;可以得到有序的数据序列 Input 第一行输入t&#xff0c;表示有t个数据序列 第二行输入n&#xff0c;表示首个序列包含n个数据 第三行输入n个数据…

机器学习:增强式学习Reinforcement learning

收集有标签数据比较困难的时候同时也不知道什么答案是比较好的时候可以考虑使用强化学习通过互动&#xff0c;机器可以自己知道什么结果是好的&#xff0c;什么结果是坏的 Outline 什么是RL Action就是一个functionEnvironment就是告诉这个Action是好的还是坏的 例子 Space i…

01-从JDK源码级别彻底剖析JVM类加载机制

文章目录 类加载运行全过程类加载器和双亲委派机制类加载器初始化过程双亲委派机制为什么要设计双亲委派机制&#xff1f;全盘负责委托机制自定义类加载器 打破双亲委派机制Tomcat打破双亲委派机制Tomcat自定义加载器详解模拟实现Tomcat的JasperLoader热加载 补充&#xff1a;H…

二进制枚举算法

二进制 : 也就是只有0和1的进制表示 ; 二进制枚举算法 一个二进制数 x 可以表示 S 的一个子集&#xff0c;某个二进制位i上为0表示没有选i元素&#xff0c;为1表示选了该元素放入子集,比如13为1101就表示选了0,2,3号元素;对于一个长度为N的序列(也就是包含N个元素)有2^N个子…

建筑模板怎么选?

在建筑领域&#xff0c;选择合适的模板材料对于确保工程质量、提高施工效率和控制成本至关重要。目前&#xff0c;常见的建筑模板主要有钢模板、塑料模板和木模板三种类型&#xff0c;每种都有其独特的优势和局限性。本文将对这些模板类型进行分析&#xff0c;并特别推荐广西生…

沉浸式数字文旅黑科技!用AI数字人升级景区体验

这年头文旅界也太卷了&#xff01; 在国家文化数字化战略的深入实施下&#xff0c;各地方文旅纷纷打造新型消费场景&#xff0c;以数字文旅提升消费产品的互动性和社交性&#xff0c;增强用户沉浸式体验。 其中&#xff0c;数字人乘着AI大语言模型的东风&#xff0c;被文旅品牌…

【数据结构】使用循环链表结构实现约瑟夫环问题

目录 1.循环链表的定义 2.约瑟夫环问题 3.创建循环链表 4.删除节点操作 5.打印所有节点 6.实现约瑟夫环问题的完整程序代码 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo_…

OpenAI 增强安全团队并赋予董事会对危险人工智能的否决权

OpenAI 在扩展其内部安全流程方面的举措以应对有害 AI 的威胁&#xff0c;OpenAI高层推出了一份更新的“准备框架”。OpenAI 的目标是识别、分析和决定如何应对他们正在开发的模型中的“灾难性”风险。他们通过对模型的四个风险类别进行评估&#xff0c;并根据风险级别制定相应…