matplotlib 在python中进行某些设置的水平条形图

iqih9akk  于 2023-01-21  发布在  Python
关注(0)|答案(1)|浏览(134)

我有一个数据集,我想在python中做水平条形图,下面是我使用的代码:

rating = [8, 4, 5, 6,7, 8, 9, 5]
objects = ('h', 'b', 'c', 'd', 'e', 'f', 'g', 'a')
y_pos = np.arange(len(objects))

plt.barh(y_pos, rating, align='center', alpha=0.5)
plt.yticks(y_pos, objects)
#plt.xlabel('Usage')
#plt.title('Programming language usage')

plt.show()

它的工作原理,无论我想要的东西,我想改变像这样的图像的情节:

我想把最上面的一栏改成红色,然后把记号放到一个像图中那样的一栏,你能帮我一下吗?谢谢。

bvjveswy

bvjveswy1#

这段代码应该提供您想要的内容。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec

rating = [8, 4, 5, 6, 7, 8, 9, 5]
objects = ['h', 'b', 'c', 'd', 'e', 'f', 'g', 'a']
y_pos = np.arange(len(objects))

fig = plt.figure(figsize=(4, 10)) 
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 5], wspace=0.0)

ax= plt.subplot(gs[0])
for i in range(len(objects)): 
    ax.text(0.5, y_pos[i], objects[i], ha='center', va='center')
ax.set_xlim(0, 1)
ax.set_ylim(-0.5, len(objects)-0.5)
ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False)

ax= plt.subplot(gs[1])
ax.barh(y_pos, rating, align='center', alpha=0.5, color=['b',]*7+['r'])
ax.set_ylim(-0.5, len(objects)-0.5)
ax.axes.get_yaxis().set_visible(False)

plt.show()

相关问题