什么是matplotlib
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 。通过 Matplotlib,开发者可以仅使用几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
安装使用
我使用的环境是Pycharm,python3+pip3,安装老失败,所以又装了一个anaconda的集成环境,使用anaconda来安装matplotlib,pycharm引用anaconda的库,才跑起来。具体操作如下:
matplotlib.plot函数
所用到的文件,密码:fj9f,其中包括某城市一段时间的失业率
import pandasas pd
import matplotlib.pyplotas plt
unrates = pd.read_csv('UNRATE.csv')
# 格式化时间格式
unrates['DATE'] = pd.to_datetime(unrates['DATE'])
# 画一个没有数据的图
plt.plot()
plt.show()
# 指定横坐标和纵坐标的数据
plt.plot(unrates['DATE'], unrates['VALUE'])
plt.show()

# 指定横坐标和纵坐标的数据,c可以指定线条颜色为蓝色,也可以不指定颜色
plt.plot(unrates['DATE'], unrates['VALUE'],c = 'blue')
# 让横纵坐标45°角显示
plt.yticks(rotation=45)
plt.xticks(rotation=45)
plt.show()

# 指定x、y轴的标注说明
plt.ylabel('VALUE')
plt.xlabel('DATE')
# 给出标题
plt.title('unrates')
plt.show()

子图操作
子图的顺序按照从左到右,从上到下
# 创建一个视图 figsize指定figure的长宽
figure = plt.figure(figsize=(8,4))
# 添加子视图,指定figure为3行2列,最后一个参数指定的是每个子视图的位置
figure.add_subplot(2, 2, 1)
figure.add_subplot(2, 2, 2)
figure.add_subplot(2, 2, 4)
plt.show()

#给子图命名,并且进行plot操作
child3 = figure.add_subplot(2, 2, 4)
child3.plot(unrates['DATE'],unrates['VALUE'])
unrates = pd.read_csv('UNRATE.csv')
# 格式化时间格式
unrates['DATE'] = pd.to_datetime(unrates['DATE'])
# 格式化时间后 指定月份
unrates['MONTH'] = unrates['DATE'].dt.month
colors = ['red', 'blue', 'green', 'orange', 'pink']
# 画五条线 表示五个年份的不同月份的失业率变化
for iin range(5):
start_index = i *12
end_index = (i +1) *12
# 截取每一年的12个月份的数据
subest = unrates[start_index:end_index]
labels =str(1948 + i)
# label:指定每一行的label
plt.plot(subest['MONTH'], subest['VALUE'], c=colors[i], label=labels)
plt.xlabel('month')
plt.ylabel('value')
plt.title('1948-1952')
# 让说明标注显示在右上角
plt.legend(loc='upper right')
plt.show()

柱状图
柱状图需要的就是 每个柱子的高度、宽度、离原点的距离(柱子间的间隔),拿到三个数据就可以开搞了。其他操作都和上述差不多。需要的文件, 密码: zcu3
# 导入数据
reviews = pd.read_csv('fandango_scores.csv')
clos = ['FILM', 'RT_user_norm', 'Metacritic_norm', 'Metacritic_user_nom', 'IMDB_norm', 'RT_norm_round',
'RT_user_norm_round']
# 组合成一个新的列表
norm_reviews = reviews[clos]
num_cols = ['RT_user_norm', 'Metacritic_norm', 'Metacritic_user_nom', 'IMDB_norm', 'RT_norm_round',
'RT_user_norm_round']
# 获取y轴的数值
# ix:通过行标签或者行号索引行数据 根据行号0,拿到每一列的数据
bar_heights = norm_reviews.ix[0, num_cols].values
# 设定6个x轴上的数据离原点的距离
bar_poi = arange(6) +0.8
figure = plt.figure(figsize=(10, 4))
# 画柱状图
ax = plt.subplot()
# 指定每个数据离原点的位置、高度、矩形的宽度
ax.bar(bar_poi, bar_heights, 0.5)
# 使用横图
# ax.barh(bar_poi, bar_heights, 0.5)
plt.show()
print(bar_heights)

散点图
一个坐标点只需要两个值就能确定,直接带入到scatter函数
ax = plt.subplot()
ax.scatter(reviews['IMDB_norm'], reviews['RT_user_norm_round'])
plt.show()
网友评论