阶梯图
import pandas as pd from matplotlib import pyplot as plt postage=pd.read_csv(r"http://datasets.flowingdata.com/us-postage.csv") fig, ax=plt.subplots(figsize=(10, 4)) ax.step(postage["Year"],postage["Price"], where='post') # 设置标题 ax.set_title("US Postage Fee") # 设置x轴刻度 ax.set_xticks(postage["Year"]) # 去除y轴刻度 # ax.set_yticks([]) # 去除边框 ax.spines["top"].set_visible(False) ax.spines["bottom"].set_visible(False) ax.spines["left"].set_visible(False) ax.spines["right"].set_visible(False) # 为绘制的阶梯图添加文字注释 for i,j in zip(postage["Year"],postage["Price"]): ax.text(x=i, y=j+0.003, s=j) fig.tight_layout() plt.show()
其中的where参数取值范围为为{'pre', 'post', 'mid'},默认值为'pre'。pre 、post 、mid代表阶梯所在位置分别在数据区间的前、后、中不同的位置
自动调整子图参数,使之填充整个图像区域:fig.set_tight_layout(True)
折线图
import pandas as pd from matplotlib import pyplot as plt # 自己寻找几组(至少两组)合适的连续型时间数据,使用折线图对该组数据在同一个子图内进行呈现。 # 根据数据的特点设置美观合理的图表标题、横纵轴标签、刻度范围、刻度标签等参数,使案例作品满足可视化设计的基本原则。 #读取文件 money = pd.read_csv(r'../data/hot-dog-stack-places.csv') print(money) #添加此代码可使用Matplotlib提供已经定义好的样式,比如,背景色,网格线,线条粗细,字号 plt.style.use('seaborn') fig,ax = plt.subplots(figsize = (10,9)) #!!!!!!!!!绘制三条折线 ax1 = plt.plot(money['Year'],money['First']) ax2 = plt.plot(money['Year'],money['Second']) ax3 = plt.plot(money['Year'],money['Third']) #中文注释 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False #设置标题 ax.set_title("某一畅销电子产品售况图 - xxx", fontproperties='SimHei',fontsize=20) #设置标签(横纵) ax.set_ylabel('某一畅销电子产品售况',fontsize = 16) ax.set_xlabel('月份',fontsize = 16) #去掉顶部和右边的边框 ax.spines["top"].set_visible(False) ax.spines["right"].set_visible(False) #设置横轴、纵轴刻度 ax.tick_params(axis = 'both',labelsize = 9) #plt.savefig('TOP10评论点赞数-条形图.png') plt.show()
散点图
散点图1
import pandas as pd from matplotlib import pyplot as plt #1990-2020年中国GDP总值的变化情况散点图 #读取文件 # GDP = pd.read_csv(r"3数据文件/gdp-per-China-worldb (1).csv") GDP = pd.read_csv(r"../data/gdp-per-China-worldb.csv") # print(GDP) #设置一张画布,宽10,高9 fig, ax = plt.subplots(figsize=(10,9)) #scatter散点图,Year为横坐标轴,GDP为纵坐标轴,s为点的大小,c为颜色,r=red, # maker为点的样式,可选,默认值为o,alpha为点的透明度,0(透明)-1(不透明) plt.scatter(GDP["Year"],GDP['GDP'],s=7,c='r',marker='o',alpha=0.5) ax=plt.gca() #设置标题名称,设置显示可以显示中文,字体大小为14 ax.set_title(u'1990-2020年中国GDP总值的变化情况散点图',fontproperties='SimHei',fontsize=16) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False #设置横纵坐标的标签 ax.set_xlabel('年份',fontsize = 14) ax.set_ylabel('GDP',fontsize = 14) #最后将画布显示出来 plt.show()
matplotlib.pyplot.scatter( x , y , s = None , c = None , marker = None , cmap = None , norm = None , vmin = None , vmax = None , alpha = None , linewidths = None , * , edgecolors = None , plotnonfinite = False ,数据=无, ** kwargs )
常用的参数主要有x, y, s,c,maker和alpha等。
具体的参数作用及取值范围如下所示:
1. x,y代表数据的位置 :数据类型为形如shape(n,)数组类型;
2. s代表点的大小:标量或形如shape(n,)数组,默认值为20;
3. c代表点的颜色:可以是色彩或颜色序列。注意c值不应该是一个单一的RGB数值或一个RGBA序列。
其中颜色参数如下b---blue, c---cyan, g---green, k---black, m-magenta, r---red, w---white, y---yellow;
4. maker代表点的样式:marker属性,可选,默认值为’o’。可以是matplotlib.marker属性,标记的详细信息见https://matplotlib.org/stable/api/markers_api.html#module-matplotlib.markers;
5. alpha代表点的透明度:alpha为浮点数,默认值:无,混合值,介于 0(透明)和 1(不透明)之间。
如果需要查看scatter函数的详细内容,可以参考matplotlib的官网文档关于scatter函数的相关内容,具体网址是:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.scatter.html#matplotlib.pyplot.scatte
散点图 + 拟合曲线
''' 分析2005年美国各州的犯罪率,入室盗窃和谋杀, 研究这两者之间是否存在某种联系?是否人口越多犯罪率越高? ''' import matplotlib.pyplot as plt import pandas as pd import numpy as np crime = pd.read_csv(r"rt数据文件/crimeRatesByState200.csv") print(crime) ''' # 消除可疑点,crime.state不等于‘United States’, # 然后crime2.state 不等于 'District of Columbia' ''' crime2 = crime[crime.state != 'United States'] crime2 = crime2[crime2.state != 'District of Columbia'] #设置横轴为muder谋杀,Y轴为burglary盗窃 x = crime2['murder'] y = crime2['burglary'] ''' # 调用scatter函数得到一个散点图实例,前面两个函数是x轴与y轴的数据来源,s是点的大小, alpha表示点的透明度 ''' plt.scatter(x, y, s=2, c='b',marker='o',alpha=0.5) plt.title("美国入室盗窃和谋杀两种犯罪率之间关系散点图(去除异常数据)") plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False ''' polyfit为多项式曲线拟合函数,其中第一个参数为M个采样点的x坐标, 第二个参数为采样点的y坐标,deg为拟合多项式的度(阶数),有几根线,平面上的直线 ''' poly = np.polyfit(x, y, deg=1) #polyval为求值函数可求的多项式poly在采样点x0出的y0 plt.plot(x, np.polyval(poly, x)) plt.show()
散点矩阵图
#Seaborn它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。 import matplotlib.pyplot as plt import pandas as pd import seaborn as sns ''' 本实例所使用的数据是2005年美国各州的犯罪率, 合计7种犯罪类型,即美国人口统计局公布的每10万人口中谋杀、抢劫和故意伤害等罪案的发生率。 ''' crime = pd.read_csv(r"../data/crimeRatesByState200.csv") # 过滤掉全美平均值和哥伦比亚特区的数据 —— 移除某行 crime2 = crime[crime.state != 'United States'] crime2 = crime2[crime.state != 'District of Columbia'] # 分别为移除state列和population列数据 —— 移除某列数据 crime2 = crime2.drop(['state'], axis=1) crime2 = crime2.drop(['population'], axis=1) print(crime2) # 绘制散点矩阵图 '''pairplot函数的第一个参数是指定数据开源,第二个参数是指定对角图(kde是密度图,hist是直方图), 第三个参数是设置使用回归。 ''' g = sns.pairplot(crime2, kind="reg") plt.show()
柱形图
柱状图1
#过去30年热狗大胃王比赛结果柱状图 import pandas as pd from matplotlib import pyplot as plt #读取文件 hotdog = pd.read_csv(r"../data/hot-dog-contest-winn.csv") # print(hotdog) #设置画布大小 fig, ax=plt.subplots(figsize=(10,9)) #设置画面布局,用bar函数绘制柱状图 #设置横坐标为Year值,纵坐标为Eaten值 plt.bar(hotdog['Year'],hotdog['Eaten']) #x表示起始位置,color表示条形颜色,edgecolor表示条形边界颜色,x表示条形的坐标序列,height表示条形的高度序列 # plt.bar(x=hotdog['Year'],height=hotdog['Eaten'],color='b',edgecolor='k') #设置标题名称,显示中文 ax.set_title(u'过去30年热狗大胃王比赛结果柱状图',fontproperties='SimHei',fontsize=16) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False #设置横纵坐标轴 ax.set_xlabel(