matplotlib绘制图

1.matplotlib是一个Python的2D绘图库。
2.matplotlib和pyecharts的区别:
pyecharts主要可以做交互式的图,风格偏向数据工程demo展示,支持中文。
缺点就是不太好调控,之前数学建模的时候设置柱形图每个的间距,设置不了,它是自动撑开的
matplotlib主要可以做静态图,风格偏向学术,不支持中文,除非你下载新的字体库。(麻烦)

这里拿电影评分的案例举例子。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'IMDB_Movie.csv', header=0, sep=',')

# 折线图
# 按照year进行分组  size计数  reset_index重置索引(相当于mysql里面的as,重命名)
# 先统计出每一年的电影有多少个
movie_count = df.groupby('Year').size().reset_index(name='Count')
# marker='o'代表标记就是圆圈   legend=False不显示他的标签
movie_count.plot(x='Year', y='Count', color='b', marker='o', legend=False)
plt.title('Movie Count By Year')
plt.xlabel('Year')
plt.ylabel('Movie Count')
plt.show()

# 柱状图
# 简单柱状图                                     # 一部电影可能有多种类型,只取第一个
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'IMDB_Movie.csv', header=0, sep=',')
df['Movie_Type'] = df['Genre'].map(lambda x: x.split(',')[0])
# print(df['Movie_Type'])
movie_type = df.groupby('Movie_Type').size().reset_index(name='Count')
movie_type.plot(x='Movie_Type', kind='barh', legend=False, color='r')
plt.title('Movie Count By Type')
plt.xlabel('Movie_Type')
plt.ylabel('')
plt.tick_params(labelsize=9)
plt.show()

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'IMDB_Movie.csv', header=0, sep=',')

# 复式柱状图    grade电影评分等级   df.cut分段,0-6分就是Bad,6-7.5分就是Normal,7.5-10就是Good
df['grade'] = pd.cut(df['Rating'], bins=[0, 6, 7.5, 10], labels=['Bad', 'Normal', 'Good'])
group_df = df.groupby(['Year', 'grade']).size().unstack()
# print(group_df)
# exit()
group_df[['Bad', 'Normal', 'Good']].plot(kind='bar')
plt.title('Movie Count By Year and Grade')
plt.show()

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'IMDB_Movie.csv', header=0, sep=',')
# 复式柱状图    grade电影评分等级   df.cut分段,0-6分就是Bad,6-7.5分就是Normal,7.5-10就是Good
df['grade'] = pd.cut(df['Rating'], bins=[0, 6, 7.5, 10], labels=['Bad', 'Normal', 'Good'])
group_df = df.groupby(['Year', 'grade']).size().unstack()
group_df[['Bad', 'Normal', 'Good']].plot(kind='bar', stacked=True)
plt.title('Movie Count By Year and Grade(stacked)')
plt.show()

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'IMDB_Movie.csv', header=0, sep=',')
# 直方图  bins=50代表有50组
df['Rating'].plot(kind='hist', bins=50)
plt.title('Movie Rating Histogram')
plt.show()

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'IMDB_Movie.csv', header=0, sep=',')
# 散点图
df.plot(kind='scatter', x='Votes', y='Rating')
plt.title('Scatter of Movie Votes and Rating')
plt.show()

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'IMDB_Movie.csv', header=0, sep=',')
# 饼图     autopct保留两位小数 startangle=90
df['grade'] = pd.cut(df['Rating'], bins=[0, 6, 7.5, 10], labels=['Bad', 'Normal', 'Good'])
df['grade'].value_counts().plot(kind='pie', autopct='%.2f%%', startangle=90)
plt.axis('equal')  # 要加上这句话,不然画出来是扁的
# plt.title('电影等级饼图')   # title不能是中文,不然会乱码
plt.title('Movie Grade Pie')
plt.ylabel('')
plt.show()

posted @ 2021-07-04 16:42  爱时尚疯了的朱  阅读(135)  评论(0编辑  收藏  举报