数据分析与机器学习四:matplotlib--bar柱图和scatter散点图

数据:各评分公司对电影的评分表

import pandas as np
reviews = np.read_csv('./fandango_scores.csv')
cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars'] # 评分公司
norm_reviews = reviews[cols]
print(norm_reviews.head(3))
IMDB_norm  Fandango_Ratingvalue  Fandango_Stars  
0       3.90                   4.5             5.0  
1       3.55                   4.5             5.0  
2       3.90                   4.5             5.0  

一、画一个柱形图:柱的高度为评分值,各条柱表示评分公司
定义画图区间和子图:figure, ax = plt.subplots()
定义柱图:ax.bar(x轴数据, y轴数据,每个柱图的宽度)或者plt
.bar(x轴数据, y轴数据,每个柱图的宽度)
import matplotlib.pyplot as plt
from numpy import arange
num_cols = cols[1:]
bar_heights = norm_reviews.ix[0, num_cols].values  # 评分值,用于柱的高度
print(bar_heights)
bar_positions = arange(5) + 0.75  # 用于柱的间距
print(bar_positions)
fig, ax = plt.subplots()  # 定义画的区间和子画
ax.bar(bar_positions, bar_heights, 0.3) # 画柱图,参数:柱间的距离,柱的值,柱的宽度
plt.show()
[4.3 3.55 3.9 4.5 5.0] 
[0.75 1.75 2.75 3.75 4.75]

 

更丰富的柱形图:

设置x轴的刻度:ax.set_xticks(x轴刻度列表)

设置x轴的标签:ax.set_xticklables(x轴标签列表,rotation=标签的倾斜度)

设置x轴的标题:ax.set_xlabel(x轴标题名称)

设置画图的标题:ax.set_title(画图的标题)

num_cols = cols[1:]
tick_positions = range(1, 6)
fig, ax = plt.subplots()
ax.bar(bar_positions, bar_heights, 0.33)

ax.set_xticks(tick_positions) # 设置x轴的刻度
ax.set_xticklabels(num_cols, rotation=45)  # 设置x轴的标签
ax.set_xlabel('Rating Source')  # 设置x轴的标题
ax.set_ylabel('Average Rating') # 设置y轴标题
ax.set_title('tile')  # 设置图的标题
plt.show() 

横向柱形图:barh

num_cols = cols[1:]
bar_widths = norm_reviews.ix[0, num_cols].values
bar_position = arange(5) + 0.75
tick_positions = range(1, 6)
fig, ax = plt.subplots()
ax.barh(bar_positions, bar_heights, 0.5)  # 横向柱图

ax.set_yticks(tick_positions) 
ax.set_yticklabels(num_cols)  
ax.set_ylabel('Rating Source')  
ax.set_xlabel('Average Rating')
ax.set_title('tile') 
plt.show()

 

二、 柱形图2:hist--区间集合的柱形图

 

 

 

 

按评分的区间统计:比如4.5-5分为一个区间,3.5-5是一个区间,得到一个新的集合bins;0-5分之共,共10个bins

 

使用hist时,不指定bins时,默认bins为10

fig, ax = plt.subplots()
ax.hist(norm_reviews['Fandango_Ratingvalue'])
plt.show()

以上图没有指定bins(区间的集合)时,默认为10

 

定义一个hist图:ax.hist(y轴数据,bins=多少个区间,range=(起始值,终止值))

fig, ax = plt.subplots()
ax.hist(norm_reviews['Fandango_Ratingvalue'], bins=20)
plt.show()

fig, ax = plt.subplots()
ax.hist(norm_reviews['Fandango_Ratingvalue'], range=(4, 5), bins=20)  # 指明评分区间为4-5分,bins为20
plt.show()

fig, ax = plt.subplots()
ax.hist(norm_reviews['Fandango_Ratingvalue'])
ax.hist(norm_reviews['Fandango_Ratingvalue'], bins=20)
ax.hist(norm_reviews['Fandango_Ratingvalue'], range=(4, 5), bins=20)
plt.show()

 设置y轴的区间:ax.set_ylim(起始值,终止值)

fig = plt.figure(figsize=(5,20))
ax1 = fig.add_subplot(4,1,1)
ax2 = fig.add_subplot(4,1,2)
ax3 = fig.add_subplot(4,1,3)
ax4 = fig.add_subplot(4,1,4)
ax1.hist(norm_reviews['Fandango_Ratingvalue'], bins=20, range=(0, 5))
ax1.set_title('Distribution of Fandango Ratings')
ax1.set_ylim(0, 50)

ax2.hist(norm_reviews['RT_user_norm'], 20, range=(0, 5))
ax2.set_title('Distribution of Rotten Tomatoes Ratings')
ax2.set_ylim(0, 50)

ax3.hist(norm_reviews['Metacritic_user_nom'], 20, range=(0, 5))
ax3.set_title('Distribution of Metacritic Ratings')
ax3.set_ylim(0, 50)

ax4.hist(norm_reviews['IMDB_norm'], 20, range=(0, 5))
ax4.set_title('Distribution of IMDB Ratings')
ax4.set_ylim(0, 50)

plt.show()

 

 

 

三、画一个散点图:ax.scatter(x轴数据,y轴数据)或plt.scatter(x轴数据,y轴数据)

fig, ax = plt.subplots()
ax.scatter(norm_reviews['Fandango_Ratingvalue'], norm_reviews['RT_user_norm'])
ax.set_xlabel('Fandango')
ax.set_ylabel('Rotten Tomatoes')
plt.show()

 

 

fig = plt.figure(figsize=(5, 10))
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)
ax1.scatter(norm_reviews['Fandango_Ratingvalue'], norm_reviews['RT_user_norm'])
ax1.set_xlabel('Fandango')
ax1.set_ylabel('Rotten Tomatoes')

ax2.scatter(norm_reviews['RT_user_norm'], norm_reviews['Fandango_Ratingvalue'])
ax2.set_xlabel('Rotten Tomatoes')
ax2.set_ylabel('Fandango')
plt.show()

 

 figure用来控制画图的区域的相关设置

ax用来控制具体的图形

 

posted on 2018-09-13 23:15  myworldworld  阅读(586)  评论(0)    收藏  举报

导航