柱状图

1 plt.bar

bar()函数中可直接设置标签,label = '' 。

当两个堆叠时,加上参数bottom可以设置那个在下面,这时便不会发生一个覆盖另一个的情况。

 特别注意这里的bottom参数设置时应该是第一次画的bar中的数据,不能用第二次,否则会出错。

# !/usr/bin/env.python
# *._ * _.coding: utf - 8.
import os, sys, pickle
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.dates as mdates
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

name_list = ['Monday', 'Tuesday', 'Friday', 'Sunday']
num_list = [9, 0.6, 2, 6]
num_list1 = [1, 2, 3, 1]
plt.bar(range(len(num_list)), num_list, label='boy', fc='y')
plt.bar(range(len(num_list)), num_list1, bottom=num_list, label='girl', tick_label=name_list, fc='r')
plt.legend()
plt.show()

参考:https://blog.csdn.net/qq_29721419/article/details/71638912

在同一个柱状图同一横坐标下画两次时,柱子会自动叠加,注意这里的叠加是重叠,不是加和,所以想比较两个数据时,除非一组比另一组都大,否则还是要用两个柱子并列的方法比较。https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.6.292844f2UPu2Bd&postId=4796

有类似的例子

#!/usr/bin/env.python
#*._ * _.coding: utf - 8.
import os, sys, pickle
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import seaborn as sns

plt.figure(figsize=(9, 6))   # 设置画布的大小
n = 8                        # 条形簇的个数
X = np.arange(n) + 1         # 生成1到8的ndarry  注意这里list类型不能直接进行算术运算,所以要用numpy类型。
# X是1,2,3,4,5,6,7,8,柱的个数
# numpy.random.uniform(low=0.0, high=1.0, size=None), normal
# uniform均匀分布的随机数,normal是正态分布的随机数,0.5-1均匀分布的数,一共有n个
Y1 = np.random.uniform(0.5, 1.0, n)
Y2 = np.random.uniform(0.5, 1.0, n)
# bar中第一个参数是柱的中心点的横坐标,第二个是柱的高度。 plt.bar(X, Y1, width=0.35, facecolor='lightskyblue', edgecolor='black') plt.bar(X + 0.35, Y2, width=0.35, facecolor='yellowgreen', edgecolor='white') # 柱的宽度 水平柱状图plt.barh,属性中宽度width变成了高度height # 打两组数据时用+,即画Y2的时候 # facecolor柱状图里填充的颜色 # edgecolor是边框的颜色 # 想把一组数据打到下边,在数据前使用负号 实践了无效果 # plt.bar(X, -Y2, width=0.35, facecolor='#ff9999', edgecolor='white') # 给图加text for x, y in zip(X, Y1): plt.text(x, y +0.02, '%.2f' % y, ha='center') # text()用于设置显示的文本内容及位置,括号中的前两个参数是所要填写的文本的位置, # %.0f' % y, 其中b是标注的文字,也即要显示的文本内容,即每个柱子对应的y值, # 其中0表示不显示小数后面的数值,1就表示显示小数后面一位,这里设置了保留两位小数。 # ha='center',va= 'bottom'代表horizontalalignment(水平对齐)verticalalignment(垂直对齐)的方式, for x, y in zip(X, Y2): plt.text(x + 0.35, y + 0.02, '%.2f' % y, ha='center', va='bottom') plt.ylim(0, +1.25) # 设置y轴的范围 plt.show()

输出:

参考:https://www.jianshu.com/p/8c0fe1240e78

原文地址:https://www.cnblogs.com/xxswkl/p/10864289.html