在可视化库Matplotlib(1)中学习了折线图和子图那么现在开始学习柱状图条形图散点图
1. 柱状图柱状图的生成函数是bar()bar()方法有两个必需的参数分别是left和height。
我们使用left来指定每个bar的高度的x坐标。我们使用height参数来指定每个条的高度。
第三个参数表示每个柱子的宽度。
1.1 生成柱状图需要的数据
这里用到的数据是美国各个网站对电影的评分数据集。"fandango_score_comparison.csv"文件。像惯常一样打开它取数据我们这里选取5家网站对第一部电影的评分数据来绘制柱状图。
#关于电影评分的数据import pandas as pdreviews pd.read_csv("fandango_score_comparison.csv") #抽出几列数据拿出来玩一下下包括电影名和五家评分网站cols ["FILM","RT_user_norm","Metacritic_user_nom","IMDB_norm","Fandango_Ratingvalue","Fandango_Stars"] norm_reviews reviews[cols] print(norm_reviews[:1]) #打印抽取数据的第一行来看看
运行结果
最后一行不带print()会使数据更清楚
1.2 就上边数据生成柱状图
还是在前边说一下关于 fig, ax plt.subplots()吧这是很多实例中给出的做法具体的理解可能就是
subplot()是一个函数它返回包含图形和轴对象的元组。因此当使用图ax plt.sub()时您将这个元组解压缩到变量图和ax中。
因为返回的是元组所以要用fig, ax这个变量来接收。
import matplotlib.pyplot as pltfrom numpy import arange#bar()方法有两个必需的参数分别是left和height。#我们使用left来指定每个bar的高度的x坐标。我们使用height参数来指定每个条的高度。num_cols ["RT_user_norm","Metacritic_user_nom","IMDB_norm","Fandango_Ratingvalue","Fandango_Stars"]bar_heights norm_reviews.ix[0,num_cols].values #取各个评分网站对第一部电影的评分作为bar()的第二个参数print(bar_heights)bar_positions arange(5) 1.00 #bar()的第一个参数print(arange(5))print(bar_positions)fig, ax plt.subplots() #subplot()是一个函数它返回包含图形和轴对象的元组。因此当使用图ax plt.sub()时您将这个元组解压缩到变量图和ax中。ax.bar(bar_positions, bar_heights,0.3) #第三个参数0.3表示每个主子的宽度plt.show()
运行结果
1.3 完整一些的上边的柱形图
如上边所示柱状图默认的x轴式12345但是在电影评分的数据中我们知道x轴应该是各大评分网站的名字的我们可以通过设置来显示。
在默认情况下matplotlib将x轴的刻度标签设置为整数在x轴上(从0到6)我们只需要在横条的x轴上标上标记。
我们可以使用Axes.set_xticks()来改变节拍的位置(1、2、3、4、5):
import matplotlib.pyplot as pltfrom numpy import arange#bar()方法有两个必需的参数分别是left和height。#我们使用left来指定每个bar的高度的x坐标。我们使用height参数来指定每个条的高度。num_cols ["RT_user_norm","Metacritic_user_nom","IMDB_norm","Fandango_Ratingvalue","Fandango_Stars"]bar_heights norm_reviews.ix[0,num_cols].values #取各个评分网站对第一部电影的评分作为bar()的第二个参数bar_positions arange(5) 1.00 #bar()的第一个参数tick_positions range(1,6) #将其设置为16是为了让其评分网站名字与数据对应上fig, ax plt.subplots() #subplot()是一个函数它返回包含图形和轴对象的元组。因此当使用图ax plt.sub()时您将这个元组解压缩到变量图和ax中。ax.bar(bar_positions, bar_heights,0.4) #第三个参数0.3表示每个主子的宽度ax.set_xticks(tick_positions)ax.set_xticklabels(num_cols,rotation 20) #将x轴改成评分网站的名字并倾斜20度显示ax.set_xlabel(Rating Source)ax.set_ylabel(Average Rating)ax.set_title(Average User Rating For Avengers: Age of Ultron (2015))plt.show()
运行结果
1.4 横着显示柱状图
一般情况下柱状图都是竖着显示的但是有时也可以横着显示两个的代码基本相同只是把bar()换成了barh()
import matplotlib.pyplot as pltfrom numpy import arangenum_cols ["RT_user_norm","Metacritic_user_nom","IMDB_norm","Fandango_Ratingvalue","Fandango_Stars"]bar_widths norm_reviews.ix[0,num_cols].values #取各个评分网站对第一部电影的评分作为bar()的第二个参数bar_positions arange(5) 1.00 #bar()的第一个参数tick_positions range(1,6) #将其设置为16是为了让其评分网站名字与数据对应上fig, ax plt.subplots() #subplot()是一个函数它返回包含图形和轴对象的元组。因此当使用图ax plt.sub()时您将这个元组解压缩到变量图和ax中。ax.barh(bar_positions, bar_heights,0.4) #第三个参数0.3表示每个主子的宽度ax.set_yticks(tick_positions)ax.set_yticklabels(num_cols,rotation 0) #将x轴改成评分网站的名字并倾斜20度显示ax.set_ylabel(Rating Source)ax.set_xlabel(Average Rating)ax.set_title(Average User Rating For Avengers: Age of Ultron (2015))plt.show()
运行结果
2 散点图
2.1 关于两个评分网站的散点图
设置散点图的函数为.scatter( )左参数为散点图的横坐标数据右参数为散点图的纵坐标数据。并且表示x,y的这些数据必须是同纬度的。
基于数据我们使用两个评分网站“Fandango_Ratingvalue”和“RT_user_norm”的数据进行散点图的绘制。
fig, ax plt.subplots()#画Fandango_Ratingvalue和RT_user_norm评分网站的散点图ax.scatter(norm_reviews[Fandango_Ratingvalue], norm_reviews[RT_user_norm])ax.set_xlabel(Fandango)ax.set_ylabel(Rotten Tomatoes)plt.show()
运行结果
2.2 在2.1的基础上转换一下轴显示
#Switching Axesfig plt.figure(figsize(10,5)) #指定画图区域ax1 fig.add_subplot(1,2,1) #定义两个子图ax2 fig.add_subplot(1,2,2)ax1.scatter(norm_reviews[Fandango_Ratingvalue], norm_reviews[RT_user_norm])ax1.set_xlabel(Fandango)ax1.set_ylabel(Rotten Tomatoes)#ax1与ax2的区别就是转换了一下x与y轴嗯就是这样ax2.scatter(norm_reviews[RT_user_norm], norm_reviews[Fandango_Ratingvalue])ax2.set_xlabel(Rotten Tomatoes)ax2.set_ylabel(Fandango)plt.show()
运行结果
转:https://www.cnblogs.com/qtww56/p/8746206.html
【文章转自 大丰网站设计 http://www.1234xp.com/dafeng.html 欢迎留下您的宝贵建议】