matplotlib.pyplot.bar()与barh()绘制条形图

目录

一、matplotlib.pyplot.bar()语法

二、 matplotlib.pyplot.barh()语法

三、绘制条形图

①绘制简单垂直条形图(pyplot编程方式)

②绘制简单水平条形图 (面向对象编程方式)

③绘制带样式的垂直条形图(pyplot与面向对象结合编程方式)

④绘制带样式的水平条形图(面向对象编程方式)

⑤分组条形图(面向对象编程方式)

⑥堆叠条形图(面向对象编程方式)

⑦对称条形图(面向对象与pyplot结合编程方式)


编程方式选择面向对象与pyplot方式最佳

一、matplotlib.pyplot.bar()语法

说明:matplotlib.pyplot.bar()绘制的都是垂直条形图

ax.bar(x, height, width=0.8, bottom=None, *, align='center', 
data=None, **kwargs)
plt.bar(
          x,   #x轴坐标
          height,   #主体高度
          width=0.8,   #指定条形宽度 默认值:0.8
          bottom=0.0,  #指定y轴高度起始值 默认值:0.0
          align='center' or 'edge',   #指定对齐方式:center:中心堆成 edge:边缘对称
          alpha,  #指定透明度
          color,   #指定条形颜色
          ec,   #指定条形图边缘颜色(是edgecolor的缩写)
          lw,   #指定条形图边缘线宽(是linewidth的缩写)
          ls,   #指定条形图边缘线条样式(是linestyle的缩写)
          fill=True or False,   #是否填充颜色
          yerr,   #指定误差大小,用于在条形图上添加误差线
          ecolor,   #指定误差线的颜色
          joinstyle='miter' or 'round' or 'bevel',   #指定条形图边角连接模式
          hatch={'/', '\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'},  #指定条形阴影
          label   #指定图例的显示内容
)

 参数:joinstyle

from matplotlib._enums import JoinStyle
JoinStyle.demo()

二、 matplotlib.pyplot.barh()语法

说明:matplotlib.pyplot.barh()绘制的都是水平条形图

  • y,width,height与bar()里的x,height,width相反
  • left等同于bar()里的bottom 不同的时left作用于x轴,bottom作用于y轴
  • 其他参数作用与bar()参数一致
barh(y, width, height=0.8, left=None, *, align='center', **kwargs)
plt.barh(
          y,   #y轴坐标
          width,   #主体长度
          height=0.8,   #指定条形宽度 默认值:0.8
          left=0.0,  #指定x轴高度起始值 默认值:0.0
          align='center' or 'edge',   #指定对齐方式:center:中心堆成 edge:边缘对称
          alpha,  #指定透明度
          color,   #指定条形颜色
          ec,   #指定条形图边缘颜色(是edgecolor的缩写)
          lw,   #指定条形图边缘线宽(是linewidth的缩写)
          ls,   #指定条形图边缘线条样式(是linestyle的缩写)
          fill=True or False,   #是否填充颜色
          yerr,   #指定误差大小,用于在条形图上添加误差线
          ecolor,   #指定误差线的颜色
          joinstyle='miter' or 'round' or 'bevel',   #指定条形图边角连接模式
          hatch={'/', '\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'},  #指定条形阴影
          label   #指定图例的显示内容
)

三、绘制条形图

①绘制简单垂直条形图(pyplot编程方式)

import matplotlib.pyplot as plt
import numpy as np

x=np.arange(0,11)
y=np.random.random(11)

# xticks设置x轴刻度值
plt.xticks(x)
plt.bar(x,y)

plt.show()

②绘制简单水平条形图 (面向对象编程方式)

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['FangSong']

plt.figure(figsize=(5,5))# 绘制一个5*5的画布
ax=plt.axes()

x=np.arange(0,6)
y=np.random.random(6)

ax.barh(x,y)

plt.show()

③绘制带样式的垂直条形图(pyplot与面向对象结合编程方式)

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['FangSong']

fig=plt.figure(figsize=(12,8))
ax=plt.axes()

x=['我们的父辈','这个杀手不太冷静','肖申克的救赎','狙击手','辛德勒的名单','长津湖']
y=[9.6,7.8,9.7,7.8,9.5,8.9]

ax.bar(x,y,width=0.5,color='#EEE8AA',ec='#A0522D',linewidth='5',yerr=0.5,ecolor='#800000',align='center',bottom=0,alpha=0.5,linestyle='-,fill=True,joinstyle='bevel',hatch='/',
label='电影评分图例')

for x,y in zip(x,y):
    ax.text(x,y,s=y,size=20) # 添加条形标签

plt.xticks(size=15) # 修改X轴刻度值字体大小
plt.yticks(size=20) # 修改y轴刻度值字体大小
plt.rcParams.update({'font.size':15})  # 设置图例字体大小

plt.title('电影评分图例展示',fontsize=25) # 设置图标标题
plt.xlabel('电影名称',fontsize=20)  # 设置x轴标题
plt.ylabel('电影评分',fontsize=20)  # 设置y轴标题

ax.grid() # 显示网格线
ax.legend()  # 显示图例
plt.show()

④绘制带样式的水平条形图(面向对象编程方式)

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['FangSong']

plt.figure(figsize=(8,8))# 绘制一个8*8的画布
ax=plt.axes()

name=['日用品','化妆品','生活费','水电费','其他开支']
spend=[500,1000,2000,200,500]

ax.barh(name,spend,height=0.5,color='#EEE8AA',ec='#A0522D',linewidth='5',align='center',left=0,alpha=0.5,
      linestyle='-',fill=True,joinstyle='bevel',hatch='o',label='消费金额')

ax.set_xticks(spend,size=15) # 修改X轴刻度值字体大小
ax.set_yticks(name,size=20) # 修改y轴刻度值字体大小

ax.set_title('日常开支水平条形图',fontsize=30) # 设置图标标题
ax.set_xlabel('消费金额(元)',fontsize=20)  # 设置x轴标题
ax.set_ylabel('支出方式',fontsize=20)  # 设置y轴标题

ax.grid(axis='x') # 设置仅显示x轴网格线
ax.legend()  # 显示图例
plt.show()

⑤分组条形图(面向对象编程方式)

注意:绘制分组条形图时,尽量用一个变量名来接收,方便后期修改。(如下图bar_width=0.2)

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['FangSong'] # 设置正常显示中文 字体为仿宋 

plt.figure(figsize=(13,10)) # 设置画布 大小为13*10
ax=plt.axes()
name=['小红','小绿','小黄','小紫']
first=[50,70,80,60]  # 第一次语文成绩
second=[60,80,75,65]  # 第二次语文成绩
third=[75,90,60,70]  # 第三次语文成绩

bar_width=0.2  # 条形宽度

ax.bar(name,first,label='第一次语文成绩',width=bar_width,align='center',color='#00FA9A')
ax.bar(np.arange(4)+bar_width,second,label='第二次语文成绩',width=bar_width,align='center',color='#EEE8AA')
ax.bar(np.arange(4)+bar_width*2,third,label='第三次语文成绩',width=bar_width,align='center',color='#FFB6C1')

ax.set_xticks(name) # 设置x轴标签
ax.set_yticks(np.arange(0,110,10)) # 设置y轴标签

ax.set_title('语文成绩分组图',fontsize=30) # 设置标题
ax.set_xlabel('姓名',fontsize=20) # 设置x轴标签
ax.set_ylabel('成绩',fontsize=20) # 设置y轴标签

ax.legend()# 显示图例
plt.show()

⑥堆叠条形图(面向对象编程方式)

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['FangSong']

fig=plt.figure(figsize=(10,9))
ax=plt.axes()

name=['日用品','化妆品','生活费','水电费','其他开支']
first=[500,1000,2000,200,500]
second=[300,1500,1800,250,800]
third=[400,800,2200,200,600]

bar_width=0.3

ax.bar(np.arange(5),first,width=bar_width,label='第一个月花费金额',color='#FFDA89')
ax.bar(np.arange(5),second,bottom=first,width=bar_width,label='第二个月花费金额',color='#F4A460')
ax.bar(np.arange(5),third,bottom=np.array(first)+np.array(second),width=bar_width,label='第三个月花费金额',color='#8B0000')

ax.set_xticks(np.arange(5),name)

ax.set_title('三个月花销堆叠图',size=30)
ax.set_xlabel('支出方式',size=20)
ax.set_ylabel('支出金额(元)',size=20)

plt.legend()
plt.show()

⑦对称条形图(面向对象与pyplot结合编程方式)

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['FangSong']
plt.rcParams['axes.unicode_minus'] = False # 设置符号显示正常

fig=plt.figure(figsize=(10,9))
ax=plt.axes()

hobby=['打篮球','逛街','打游戏','打羽毛球','踢足球','看电影']
hobby_man=np.array([10,1,15,13,11,6])
hobby_woman=np.array([2,20,5,15,1,10])

ax.barh(range(6),hobby_man,label='男生',color='#191970',height=0.3,align='center')
ax.barh(range(6),-hobby_woman,label='女生',color='#FFB6C1',height=0.3,align='center')

plt.yticks(range(6),hobby)
plt.xticks(np.arange(-20,25,5))

plt.title('两极分化对称条形图',size=30)
plt.ylabel('爱好',size=20)
plt.xlabel('人数',size=20)

plt.legend()
plt.show()

总结:编程方式选择面向对象编程与pyplot编程方式结合在一起为最佳

<think>嗯,用户想了解如何配置和使用yum源。首先,我需要回忆一下关于yum源的基本知识。记得yum源是软件仓库,用来管理RPM包的安装和依赖关系。配置yum源通常涉及编辑.repo文件,这些文件位于/etc/yum.repos.d/目录下。还有可能涉及到本地源和网络源的配置。 根据用户提供的引用内容,引用[2]提到yum的配置文件分为main和repository部分,main在/etc/yum.conf,而repository在/etc/yum.repos.d/里的各个文件。所以配置的时候需要关注这两个部分。用户可能遇到的问题包括如何创建新的源文件,如何指向本地或网络路径,以及如何处理GPG检查。 用户的问题可能包括步骤不清晰,比如如何挂载ISO镜像来配置本地源。引用[3]中提到了创建local.repo文件,并指定baseurl为file:///路径。这时候需要确保挂载点正确,并且权限设置没问题。另外,可能需要禁用默认的网络源,避免冲突。 用户还可能关心如何测试配置后的yum源是否生效,比如运行yum clean all和yum makecache。此外,常见问题如无法找到包,可能和baseurl的配置错误有关,或者网络源不可达。需要检查URL是否正确,网络连接是否正常。 可能还需要解释不同的源类型,比如本地、网络(如阿里云、清华源),以及如何备份原有的配置文件,避免出错后恢复。引用[1]提到可以将默认文件移到/opt下或重命名,这样可以禁用默认源,避免干扰。 总结下来,回答的结构应该分步骤,包括备份、创建repo文件、配置内容、清理缓存,然后验证。同时,常见问题部分需要列出可能的问题和解决方法,如GPG检查、路径错误等。还要注意使用正确的格式,行内变量用$符号,独立公式用$$,不过这里可能数学公式不多,但需要确保LaTeX正确。</think>### 如何配置和使用yum源? #### 一、yum源的核心配置方法 1. **备份默认源** 操作前建议备份系统原有源配置: ```bash mv /etc/yum.repos.d/*.repo /opt/backup/ # 将默认源文件移动到备份目录 ``` 这是为了防止原有配置新配置产生冲突[^1]。 2. **本地yum源配置** - **挂载镜像文件** 将CentOS镜像文件挂载到指定目录: ```bash mount -o loop /path/to/CentOS-ISO /mnt/cdrom ``` - **创建配置文件** 新建`/etc/yum.repos.d/local.repo`并写入: ```ini [local-base] name=Local-CentOS-Base baseurl=file:///mnt/cdrom gpgcheck=0 enabled=1 ``` 关键参数说明: - `baseurl`:本地路径使用`file://`协议头[^3] - `gpgcheck=0`表示跳过数字签名验证 3. **网络yum源配置** 以阿里云源为例,创建`/etc/yum.repos.d/aliyun.repo`: ```ini [aliyun-base] name=Aliyun-CentOS-Base baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 enabled=1 ``` 注意:`$releasever`和`$basearch`会自动解析为系统版本和架构[^2] #### 二、关键操作命令 1. **清理缓存并更新** ```bash yum clean all # 清除旧缓存 yum makecache # 生成新缓存 yum repolist all # 验证源状态 ``` 2. **典型使用场景** ```bash yum install httpd -y # 安装软件包 yum update # 更新所有软件 yum search python3 # 搜索软件包 ``` #### 三、常见问题排查 | 问题现象 | 解决方案 | |---------|----------| | `Could not resolve host` | 检查网络连接和`baseurl`地址 | | `Package not found` | 确认仓库是否包含该软件包版本 | | GPG签名校验失败 | 设置`gpgcheck=0`或导入正确密钥 | #### 四、进阶配置技巧 1. **多源优先级控制** 安装`yum-plugin-priorities`插件,在`.repo`文件中添加: ```ini priority=1 # 数字越小优先级越高 ``` 2. **仓库分组管理** 通过`[epel]`、`[docker]`等独立仓库配置实现分类管理
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值