Python matplotlib绘图 plt.barh或sns.barplot 水平条形图调整顺序逆序排列

使用matplotlib 中的 plt.barh 绘制水平条形图时,数据的排列顺序默认由小到大排列,即数据条由短到长排列展示,如果想让数据条由长到短排列展示,可尝试以下代码。

1. 使用 plt.bar 绘制条形图

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建数据
testy = pd.DataFrame({'label':['a','b','c']
                       ,'S01':[22,13,5]
                       ,'S02':[1,5,19]
                       ,'S03':[14,11,0]
                    })

输出数据: 

# 绘图
plt.barh(y=testy['label'],
          width=testy['S01'], 
          tick_label=testy['label'], # y轴标签
          color='orange',
          height=0.5,
          )
plt.title('Test Data',fontsize=14)
plt.show()

  可以看到,数据条按由小到大顺序展示。想让数据条由长到短排列展示,首先将数据逆序排列,可使用 切片 .iloc[::-1]

testy_reverse = testy.iloc[::-1]

调整顺序后的数据 

# 绘图
plt.barh(y=testy_reverse['label'],
          width=testy_reverse['S01'],
          tick_label=testy_reverse['label'], # y轴标签
          color='orange',
          height=0.5,
          )
plt.title('Reverse Test Data ',fontsize=14)
plt.show()

注意观察,调整顺序前后,y轴的标签也随之调整了。

2. 使用 sns.barplot 也可以达到调整顺序的目的,而且更方便

import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(15,3))
plt.subplot(141)
sns.barplot(data=testy, x='label', y='S01')

plt.subplot(142)
sns.barplot(data=testy, x='S01', y='label')

plt.subplot(143)
sns.barplot(data=testy, x='S01', y='label', order=['c','b','a'])

plt.subplot(144)
sns.barplot(data=testy, x='S01', y='label', order=['b','c','a'])

plt.show()

sns.barplot中调整x, y的值,可以改变条形图方向,使用order参数,可以调整 标签顺序。 

在vscode中使用matplotlib绘制图形时,当调用plt.show()方法时可能会出现图形不显示的情况。这主要是因为vscode默认使用的Python解释器与matplotlib不兼容所导致的。 解决这个问题的方法有以下几种: 1. 确保使用正确的Python解释器:打开vscode的终端,使用命令"which python" 或 "where python" 来查看当前使用的Python解释器的路径。确保路径与你安装matplotlib时使用的Python解释器路径一致。 2. 检查matplotlib版本:确保你安装的matplotlib版本是最新的。可以使用命令"pip show matplotlib"来查看已安装的matplotlib版本,并尝试升级到最新版本。 3. 更改绘图后台:在代码中添加如下一行代码可以尝试更改绘图的后台。例如使用TkAgg或者QtAgg后台绘图: import matplotlib matplotlib.use('TkAgg') 4. 打开vscode的"settings.json"文件并添加以下一行设置来修改vscode的用户设置: "python.show.plot.figure.automatic": false 这将禁用vscode自动显示绘图,需要手动调用plt.show()方法来显示图形。 5. 在vscode中使用其他绘图库:除了matplotlib,还有其他绘图库如seaborn、plotly、bokeh等。尝试使用其他绘图库来代替matplotlib,可能会解决图形不显示的问题。 以上方法中任意一种都可能解决vscode中matplotlib不显示图形的问题。选择适合你的情况的方法进行尝试。如果问题仍未解决,建议查阅相关的文档或者在社区论坛中寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值