Python之matplotlib基础2--画柱状图

曲线图用来绘制一段连续的变化比较合适,而柱状图比较适合绘制多样型的比较,比如下面的例子,10个电影的票房记录,用柱状图可以直观的显示出来。

from matplotlib import pyplot as plt
import matplotlib

#用直方图的形式显示出每个电影的票房,单位:亿元
x=["千与千寻","你的名字","龙猫","蜘蛛侠:平行宇宙","寻梦环游记","疯狂动物城","大护法","大圣归来","太空龙虾的入侵","大话西游之\n二大圣娶亲"]
y=[1.34,3.54,0.67,0.4,3.4,2.5,1.8,0.9,1.1,2.8]

#设置图片大小
plt.figure(figsize=(20,12),dpi=80)
#设置可以正常显示中文
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': '10'
        }
matplotlib.rc('font', **font)

#绘柱壮图用plt.bar方法
plt.bar(x,y,width=0.3)

#设置X轴旋转显示的字符90度
plt.xticks(rotation=90)

#保存到本地,指定文件名,如果为svg格式,可以保存为矢量图
plt.savefig("./sig_size_10.png")

plt.show()

感觉上面的这个图不太好看,x和y轴对换一样应该更好

其它的没有改变,只是用plt.barh替换plt.bar方法,由于中文在y轴了,所以用plt.yticks来设置中文的属性

#绘制横着的柱状图
from matplotlib import pyplot as plt
import matplotlib

#用直方图的形式显示出每个电影的票房,单位:亿元
x=["千与千寻","你的名字","龙猫","蜘蛛侠:平行宇宙","寻梦环游记","疯狂动物城","大护法","大圣归来","太空龙虾的入侵","大话西游之\n二大圣娶亲"]
y=[1.34,3.54,0.67,0.4,3.4,2.5,1.8,0.9,1.1,2.8]

#设置图片大小
plt.figure(figsize=(20,12),dpi=80)
#设置可以正常显示中文
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': '10'
        }
matplotlib.rc('font', **font)

#绘柱壮图用plt.barh方法
plt.barh(x,y,height=0.6)

#设置Y轴旋转显示的字符45度
plt.yticks(rotation=45)

#保存到本地,指定文件名,如果为svg格式,可以保存为矢量图
plt.savefig("./sig_size_10.png")

plt.show()

绘制某几部电影三天的票房,不仅要比较本部电影三天的票房,还要比较多部电影这几天的票房变化

from matplotlib import pyplot as plt
import matplotlib

#设置可以正常显示中文
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': '10'
        }
matplotlib.rc('font', **font)

x=["千与千寻","你的名字","龙猫","蜘蛛侠:平行宇宙","寻梦环游记"]
y_day1=[12221,15433,22322,31210,19110]
y_day2=[11316,13543,8675,21110,6001]
y_day3=[6543,5233,1990,18984,3002]

#设置柱状的宽度
bar_width=0.2

#定义X轴上每部电影每天的座标
x_1=list(range(len(x)))
x_2=[i+bar_width for i in x_1]
x_3=[i+bar_width*2 for i in x_1]

# print(x_1)
# print(x_2)
# print(x_3)
# # [0, 1, 2, 3, 4]
# # [0.2, 1.2, 2.2, 3.2, 4.2]
# # [0.4, 1.4, 2.4, 3.4, 4.4]

#设置图形大小
plt.figure(figsize=(20,8),dpi=80)

#设置x座标显示方式,x_2与x的值对应,因为x_2是正中间位置
plt.xticks(x_2,x)

#分别画三天的柱状图
plt.bar(x_1,y_day1,width=bar_width,label="10月1日")
plt.bar(x_2,y_day2,width=bar_width,label="10月2日")
plt.bar(x_3,y_day3,width=bar_width,label="10月3日")

#添加图例,告诉别人每条线代表什么
#先在plt.plot方法上加了'label'参数,然后用legend来指定图例的位置
plt.legend(loc='upper left')

plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值