用python画双向的柱状图

用python画双向的柱状图

需要用到两个第三方库:Numpy, Matplotlib

其中,Numpy用于建立数据,Matplotlib用于绘图。

首先导入两个模块

import matplotlib.pyplot as plt
import numpy
x=['周一','周二','周三','周四','周五']
y1=numpy.array([2,5,7,2,3])
y2=numpy.array([1,3,5,1,2])#普通列表不能这样用:-y2

上面的y1和y2是numpy数组,这样做的原因是python的列表不能这样操作:

-[1,2,3,4]。而使用了numpy数组可以这样操作:-y2,这样每一个元素都变为负了。

下面这样代码是为了让中文正常显示,后面的'SimSun'可以改为'SimHei'这些你电脑存在的字体。

plt.rcParams['font.sans-serif']=['SimSun']#设置字体用来正常显示中文

下面就是绘图的代码了。

bar表示绘制柱状图,x是横坐标,y1, -y2是纵坐标,label是将会显示在图中的标签的名字。

legend用于显示标签。

#竖向
plt.bar(x,y1,label='系列1')
plt.bar(x,-y2,label='系列2')
plt.xlabel('日期')
plt.ylabel('数值')
plt.title('双向柱状图')
plt.legend()

结果如下

用python画双向的柱状图

横向的效果:

用python画双向的柱状图

完整代码:

import matplotlib.pyplot as plt
import numpy
x=['周一','周二','周三','周四','周五']
y1=numpy.array([2,5,7,2,3])
y2=numpy.array([1,3,5,1,2])#普通列表不能这样用:-y2 plt.bar(x,-y2,label='系列2')
plt.rcParams['font.sans-serif']=['SimSun']#设置字体用来正常显示中文

#竖向
plt.bar(x,y1,label='系列1')
plt.bar(x,-y2,label='系列2')
plt.xlabel('日期')
plt.ylabel('数值')
plt.title('双向柱状图')
plt.legend()


#横向
plt.figure()
plt.barh(x,y1,label='系列1')
plt.barh(x,-y2,label='系列2')
plt.xlabel('数值')
plt.ylabel('日期')
plt.title('双向柱状图')
plt.legend()

plt.show()