曲线图用来绘制一段连续的变化比较合适,而柱状图比较适合绘制多样型的比较,比如下面的例子,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()