用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()
结果如下
横向的效果:
完整代码:
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()