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

news2024/11/14 13:34:15

 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()

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue】el-date-picker日期范围组件(本周、本月、上周)

系列文章 【Vue】vue增加导航标签 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/134965353 【Vue】Element开发笔记 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/133947977 【Vue】vue&#xff0c;在Windows IIS平台…

proxysql读写分离组件部署

一、前言 在mysql一主两从架构的前提下&#xff0c;引入读写分离组件&#xff0c;可以极大的提高mysql性能&#xff0c;proxysql可以在高可用mysql架构发生主从故障时&#xff0c;进行自动的主从读写节点切换&#xff0c;即当mysql其他从节点当选新的主节点时&#xff0c;proxy…

使用yolov8和moviepy自动截取视频中人出现的片段

前言 这么长时间没写博客&#xff0c;其实主要是忙于一个行为实时检测大型项目的开发&#xff0c;最近闲下来就写这篇当年末总结了。这篇文章的起因还是某个业务需求&#xff0c;要求分析视频中有人的部分&#xff0c;没人的部分需要去掉&#xff0c;同时行为检测的数据集如果…

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

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

SAP 特殊采购类80简介

前面我们已经测试特殊采购类40、70,我们今天测试一下特殊采购类80。 特殊采购类80:在替代工厂生产,在成品层维护特殊采购类,需求和收货在计划工厂完成,成品生产和组件采购在生产工厂完成。 80采购类也是我们在SAP系统中实现跨工厂需求传递的一种方式。它具有传递方式简单、…

破局:国内母婴市场“红利减退”,母婴店如何拓客引流裂变?

破局&#xff1a;国内母婴市场“红利减退”&#xff0c;母婴店如何拓客引流裂变&#xff1f; 背景&#xff1a;中国母婴市场近年来人口出生率一直在恒定范围值&#xff0c;国家也在鼓励优生、多生政策&#xff0c;并且随着互联网的高速发展&#xff0c;人均可支配收入也在增加&…

XC6617 双路输出电容式触摸感应加PWM调光芯片 适用于触摸台灯、触摸调光LED灯

XC6617是一款单路输入双路输出电容式触摸感应PWM调光IC XC6617可在有介质(如玻璃、亚克力、塑料、陶瓷等)隔离保护的情况下实现触摸功能&#xff0c;安全性高。XC6617内置稳压源、上电复位/低压复位及环境自适应算法等多种措施&#xff0c;抗干扰性能优秀。 应用范围:…

程序员应用开发的神器——低代码

一、火热的低代码 低代码的热潮至今未消停&#xff0c;从阿里钉钉跨平台协作方式&#xff0c;再到飞书上的审批流程&#xff0c;以及目前我们接触到的表单审批、投票的模板&#xff0c;这些都是关于低代码的实现方式。 据Gartner最新报告显示&#xff0c;到2023年&#xff0c;超…

微信小程序隐藏返回首页按钮

当用户打开的小程序最底层页面是非首页时&#xff0c;默认展示“返回首页”按钮&#xff0c;开发者可在页面onLoad或者onShow中调用 hideHomeButton 进行隐藏 onLoad(options) {wx.hideHomeButton() }, 官方文档 链接&#xff1a;wx.hideHomeButton(Object object) | 微信开放…

flowable工作流学习笔记

不同版本使用方式不一样&#xff0c;案例使用两个版本6.5.0及6.6.0,学习中6.5.0 版本是独立框架&#xff08;服务单独部署&#xff09;使用的&#xff0c; 6.6.0与springboot集成&#xff0c; 6.5.0版本如下&#xff1a; 下载flowable&#xff1a; https://github.com/flowa…

【ranger】CDP环境 更新 ranger 权限策略会发生低概率丢失权限策略的解决方法

一、问题描述&#xff1a; 我们的 kafka 服务在更新&#xff08;添加&#xff09; ranger 权限时&#xff0c;会有极低的概率导致 MM2 同步服务报错&#xff0c;报错内容 Not Authorized。但是查看 ranger 权限是赋予的&#xff0c;并且很早配置的权限策略也会报错。 相关组件…

有损编码——Wyner-Ziv理论

有损编码是一种在信息传输和存储中常见的编码技术&#xff0c;其主要目标是通过牺牲一定的信息质量&#xff0c;以换取更高的压缩效率。相比于无损编码&#xff0c;有损编码可以在保证一定程度的信息还原的前提下&#xff0c;使用更少的比特数来表示信息。Wyner-Ziv理论是一种重…

类的6个默认成员函数(上)

<center>Efforts of today and tomorrow.<center>今天的努力&#xff0c;明天的实力。开启本文&#xff01; 引入&#xff1a;  如果一个类中森么都没有&#xff0c;那么这个类就是空类&#xff0c;然而空类中真的是什么都没有吗&#xff1f; 其实不然&#xff0c…

第五节 操作符

第五节 操作符 目录 一&#xff0e; 操作符分类二&#xff0e; 算术操作符三&#xff0e; 移位操作符1. 二进制位2. 左移操作符3. 右移操作符 四&#xff0e; 位操作符1. 按位与2. 按位或3. 按位异或 五&#xff0e; 赋值操作符六&#xff0e; 单目操作符1. 概述2. sizeof是操作…

【Spring教程31】SSM框架整合实战:从零开始学习SSM整合配置,如何编写Mybatis SpringMVC JDBC Spring配置类

目录 1 流程分析2 整合配置2.1 步骤1&#xff1a;创建Maven的web项目2.2 步骤2:添加依赖2.3 步骤3:创建项目包结构2.4 步骤4:创建SpringConfig配置类2.5 步骤5:创建JdbcConfig配置类2.6 步骤6:创建MybatisConfig配置类2.7 步骤7:创建jdbc.properties2.8 步骤8:创建SpringMVC配置…

k8s安装配置dashboard

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

kali-捆绑应用程序

文章目录 一、安装开发环境二、开始捆绑三、开始监听 操作环境 kali windows 一、安装开发环境 ┌──(kali㉿kali)-[~] └─$ sudo -i [sudo] kali 的密码&#xff1a;┌──(root㉿kali)-[~] └─# whoami root┌──(root㉿kali)-[~] └─# apt update …

(七)STM32 NVIC 中断、优先级管理及 AFIO 时钟的开启

目录 1. 中断相关知识简介 1.1 什么是中断 1.2 什么是内中断、外中断 1.3 什么是可屏蔽中断、不可屏蔽中断 2. CM3 内核中断介绍 2.1 F103系统异常清单 2.2 F103 外部中断清单 3. NVIC 简介 3.1 NVIC 寄存器简介 3.2 NVIC 相关寄存器的介绍 4. 中断优先级 4.1 优先…

uni-app 用于开发H5项目展示饼图,使用ucharts 饼图示例

先下载ucharts H5示例源码&#xff1a; uCharts: 高性能跨平台图表库&#xff0c;支持H5、APP、小程序&#xff08;微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序&#xff09;、Vue、Taro等更多支持canvas的框架平台&#…

洛谷 P8794 [蓝桥杯 2022 国 A] 环境治理

文章目录 [蓝桥杯 2022 国 A] 环境治理题目链接题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路解析CODE给点思考 [蓝桥杯 2022 国 A] 环境治理 题目链接 https://www.luogu.com.cn/problem/P8794 题目描述 LQ 国拥有 n n n 个城市&#xff0c;从 0 0 …