数据分析与机器学习四: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) 收藏 举报