Python Matplotlib练习

Python Matplotlib练习

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 

(1)画出\(y=x^{2}+2x+1\)在区间[-5,3]的函数图像。

x = np.linspace(-5,3)
y = x**2+2*x+1
plt.plot(x,y)
plt.show()


png

(2)在同一张图中创建两个子图,分别画出sinx和cosx在[-3.14,3.14]上的函数图像。设置线条宽度为2.5.

x1 = np.linspace(-np.pi,np.pi)
y1 = np.sin(x1)
y2 = np.cos(x1)

plt.subplot(211)
plt.plot(x1,y1,linewidth=2.5)
plt.ylabel('y1')

plt.subplot(212)
plt.plot(x1,y2,linewidth=2.5)
plt.xlabel('x1')
plt.ylabel('y2')
plt.show()


png

(3)读取上次作业保存的酒店数据,画出每个地区酒店数量的柱状图,柱状颜色为红色

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_excel('酒店数据2.xlsx')
data = df['地区'].value_counts()
x = data.index
y = data.values
plt.figure(figsize=(12,6))
plt.bar(x,y,color='r')
plt.tick_params(labelsize=13)
plt.xticks(rotation=90)
plt.show()


png

(4)画出每个价格等级酒店数量的柱状图。

data1 = df['等级'].value_counts()
x = data1.index
y = data1.values

plt.figure(figsize=(10,5))
plt.title('价格等级数量')
plt.bar(x,y,linewidth=15)
plt.tick_params(labelsize=13)
plt.ylim(0, 250)
plt.grid(axis='y')
for a,b,in zip(x,y):
    plt.text(a,b,b,ha='center',va='bottom',fontsize=12)
plt.show()


png

(5)画出各个价格等级占比的饼图。

y1 =y/sum(y)
plt.figure(figsize=(8,8))
plt.pie(y1,labels=x,autopct='%.1f %%',textprops = {'fontsize':16})
plt.show()


png

(6)画出酒店评分的直方图。

plt.figure(figsize=(8,8))
plt.hist(df['评分'],bins=len(df['评分'].unique()))
plt.show()


png

(7)画出每个热门等级酒店评分均值的柱状图。(按照评分均值从小到大排序。)

data2 = df['评分'].groupby(df['等级']).mean()
data2 = data2[::-1]
x = data2.index
y = data2.values
plt.figure(figsize=(8,6))
plt.title('每个热门等级酒店评分均值')
plt.tick_params(labelsize=13)
for a,b,in zip(x,y):
    plt.text(a,b+0.05,b,ha='center',va='bottom',fontsize=13)
plt.bar(x,y)
plt.show()


png

(8)根据评分和价格信息,绘制散点图。

x = df['评分'].values
y = df['价格'].values
plt.scatter(x,y)
plt.title('评分价格散点图')
plt.xlabel('评分')
plt.ylabel('价格')
plt.show()


png

(9)画出油尖旺地区,评分的箱线图。

data = df[df.地区=='油尖旺']['评分']
plt.boxplot(data,whis=2)
plt.show()


png

(10)选出平均价格前5的地区,画出这些地区的评分的箱线图。

data1 = df['价格'].groupby(df['地区']).mean()
data1 = data1.sort_values()[-5:]
x1 = df[df.地区==data1.index[0]]['评分']
x2 = df[df.地区==data1.index[1]]['评分']
x3 = df[df.地区==data1.index[2]]['评分']
x4 = df[df.地区==data1.index[3]]['评分']
x5 = df[df.地区==data1.index[4]]['评分']

plt.title('平均价格前五地区的评分',fontsize=18)
plt.xlabel('地区',fontsize=16)
plt.ylabel('评分',fontsize=16)
plt.boxplot([x1,x2,x3,x4,x5],labels=[data1.index[0],data1.index[1],data1.index[2],data1.index[3],data1.index[4]],
           whis=1,flierprops={'marker':'o','markerfacecolor':'r','color':'k'},
           patch_artist=True,boxprops={'color':'k','facecolor':'#9999ff'})
plt.show()


png

(11)将题目9,10的图像旋转90度。

data = df[df.地区=='油尖旺']['评分']
plt.boxplot(data,whis=2,vert=False)
plt.show()


png

plt.boxplot([x1,x2,x3,x4,x5],labels=[data1.index[0],data1.index[1],data1.index[2],data1.index[3],data1.index[4]],
           whis=1,flierprops={'marker':'o','markerfacecolor':'r','color':'k'},
           patch_artist=True,boxprops={'color':'k','facecolor':'#9999ff'},vert=False)
plt.show()


png

(12)绘制一个评分,评分人数和价格之间的相关系数图

import seaborn as sns
data2 = df[['评分','评分人数','价格']]
corr = abs(data2.corr())

sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={'size':13,'weight':'bold'},linewidth=0.05)

plt.show()


png


posted @ 2021-07-28 10:14  王陸  阅读(794)  评论(0编辑  收藏  举报