首页 > 编程语言 >python利用matplot绘制横向条形图,并调整每个条形的位置

python利用matplot绘制横向条形图,并调整每个条形的位置

时间:2024-09-12 16:39:04浏览次数:11  
标签:matplot draw bar python mybar color ax 条形图 left

通过color_x和t_x控制每个条形的颜色和文本,draw_mybar里的y和left可以控制条形显示的位置。

import matplotlib.pyplot as plt
import numpy as np

# 数据设置
categories = ["A","B","C","D"]


color_1= "#9dc3e4"
color_2= "#f8cbbd"
color_3= "#c6e0c4"
color_4= "#f0bfbf"
t_1= "ALP"
t_2= "BET"
t_3= "GAM"
t_4= "DEL"
# 每个条形的颜色

# 条形图的位置
y = [0.3,0.6,0.9,1.2]

# 创建一个新的图形
fig, ax = plt.subplots(figsize=(8, 4))

# 绘制每个部分的条形图
# color也可以是数组

# 在条形图上添加文本标注

def add_labels(bars, values):
    for bar, value in zip(bars, values):
        width = bar.get_width()  # 条形的宽度
        start_pos = bar.get_x()  # 条形的起始位置
        center_x = start_pos + width / 2  # 计算条形的中心位置
        center_y = bar.get_y() + bar.get_height() / 2  # 计算条形的中心位置(垂直方向)
        ax.text(center_x, center_y, f'{value}', ha='center', va='center', color='black', fontsize=13)
        # print(bar,value)

def draw_mybar(y,width,my_color,label,left=0,my_height=0.2):
    temp_bar=ax.barh(y,width,height=my_height,color=my_color,label=label,left=left)
    add_labels(temp_bar,[label])
    return temp_bar
# 在指定位置绘制,并为每个部分添加标签;y控制纵坐标,left控制左偏移(即横坐标)

# 要用[] {花括号是set不是array!!!Python这个坑有点...}
draw_mybar(y[3], 8, color_1, t_1, left=0)
draw_mybar(y[0], 8, color_4, t_4, left=16)
draw_mybar(y[2], 8, color_3, t_3, left=4)
draw_mybar(y[1], 8, color_2, t_2, left=12)


draw_mybar(y[3], 2, color_4, t_4, left=8)
draw_mybar(y[3], 2, color_2, t_2, left=10)
draw_mybar(y[3], 2, color_3, t_3, left=12)

draw_mybar(y[2], 2, color_1, t_1, left=12)
draw_mybar(y[2], 2, color_4, t_4, left=0)
draw_mybar(y[2], 2, color_2, t_2, left=2)

draw_mybar(y[1], 2, color_3, t_3, left=0)
draw_mybar(y[1], 2, color_1, t_1, left=8)
draw_mybar(y[1], 2, color_4, t_4, left=10)

draw_mybar(y[0], 2, color_2, t_2, left=0)
draw_mybar(y[0], 2, color_3, t_3, left=2)
draw_mybar(y[0], 2, color_1, t_1, left=10)



# 设置标签和标题
ax.set_yticks(y)
ax.set_yticklabels(categories)
ax.set_xlabel('time')
ax.set_title('')
# 只保留左边和下方的边框,去掉右边和上方的边框
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.set_xlim(0, 26)



# 显示图例
# ax.legend()
# 获取 X 轴的刻度坐标

# 显示图形
plt.show()

效果:
草稿,未完待续...

标签:matplot,draw,bar,python,mybar,color,ax,条形图,left
From: https://www.cnblogs.com/6543x1/p/18410532

相关文章

  • python基于django框架医院管理系统设计与实现mysql数据库
    随着信息技术的快速发展和医疗卫生事业的不断进步,医院信息化管理已成为提高医疗服务质量和效率的重要手段。本文设计并实现了一个基于PythonDjango框架的医院管理系统,旨在为医院提供一个全面、高效、易用的信息化管理平台。本系统采用Django框架作为后端开发框架,利用其强大......
  • ubuntu22.04安装python2+python命令软链接修改
      ubuntu22.04安装python2+python命令软链接修改问题由来:新版本的ubuntu默认安装python3,且可能默认的运行命令为python3,而非python。除此之外,一些古早的代码底层可能用的python2。因此,本文简单讲述如何在高版本系统中安装python2,并添加python命令(软链接)1python2安装(1)apt-ge......
  • 使用 Matplotlib 进行交互式散点图突出显示和删除
    Matplotlib和散点图Matplotlib是一个用于绘制数据可视化图形的Python库。学习Matplotlib是探索数据可视化领域的重要一步。散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随 自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。交互式散点......
  • 揭秘Python:对象类型打印
    一、Python数据类型简介在Python的世界中,了解你正在处理的数据类型是至关重要的。Python提供了多种内置数据类型,包括数字(整数和浮点数)、字符串、列表、元组、字典等。这些数据类型决定了你可以对数据执行哪些操作,以及如何高效地存储和处理数据。1.数字类型数字类型是最基本的数据......
  • Java开发者无痛丝滑入门Python
    哈喽各位道友,经过两周的更新,凡人编程传的第一个“系列”学习笔记《Python基础》已经全部上线啦,现在免费分享给大家,学习路线在下面,点击链接即可跳转对应笔记。这套笔记有什么不一样的地方呢?这套笔记适合有一定Java编程基础的道友,因为笔记语言比较简练,大多只讲重点,避免了啰嗦......
  • python+opencv图片文字旋转矫正
    最近在使用实在RPA做机器人自动化,功能是受理单核对,即对核对业务受理人是否上传受理单承诺书方法很简单,由于系统中图片位置不固定,所以需要将所有附件进行下载,并进行图像文字识别,但是实在RPA中的OCR识别无法识别颠倒倾斜的图片,所以有两种方法,一种是使用其他OCR模型,一种是将图片旋转......
  • python定时任务解决方案
    在Python中,有多种方式可以实现定时任务。以下是一些常见的解决方案:1.Celery概述:Celery是一个强大的异步任务队列,支持延迟执行和定时任务。特点:支持多种消息代理,如RabbitMQ和Redis。可以使用celerybeat来调度定时任务。支持任务重试、结果存储等功能。适用......
  • Python库有哪些?如何安装?
    Python是一门非常高级的编程语言,且独具特色,是许多编程语言无法比拟的,比如第三方库。Python的第三方库非常丰富,它们为Python提供了丰富的功能和特性,那么常用的Python库有哪些?我们来看看吧。1、数据处理Numpy:用于科学计算和数组操作。Pandas:用于数据帧和时间序列操......
  • 【python】时间和日期
    时间截时间截(timestamp),能表示一份数据在某个特定的时间之前已经存在的,完整的,可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。时间截是值格里尼治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00秒)到现在的总秒数。时间截在电子商务,金融活动上有着广泛......
  • Python打包完成后报错,如何解决?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【钟爱一生】问了一个Python打包处理数据的问题,问题如下:打包完成后报错:发生错误:Missingoptionaldependency'openpyxl'.Usepiporcondatoinstallopenpyxl.哪位大佬帮我看一下错在哪了?二、实现过程后来......