matplotlib

matplotlib:Python中常用的图形框架 可以绘制线图 散点图 等高线图 条形图 柱状图 3D图形 图形动画等

  • 调用
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 下面两句避免warning
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

# one:
# fig = plt.figure(figsize=(float1,float2))   # 指定画布大小
# ax = fig.add_subplot(x,y,index)
# two:
# ax = plt.subplot(xyz)   # 在给定的网格位置返回图象;前俩个参数确定共有多少个图像(行数,列数),第三个参数确定该图的位置

# 子图
# fig1 = plt.figure(figsize=(6,6))
# a1 = fig1.add_subplot(2,1,1)
# a2 = fig1.add_subplot(2,1,2)
a1 = plt.subplot(211)
a2 = plt.subplot(212)
a1.plot(np.random.randint(1,5,5),np.arange(5))
a2.plot(np.arange(10)*3,np.arange(10))
plt.show()

# 细节
plt.xlabel('Month')
plt.ylabel('Unemployment Rate')
plt.title('Monthly Unemployment Treands, 1948')
plt.legend(loc=0)   # 折线图中不同线条标识位置
plt.xticks(rotation=45)   # 坐标标识旋转

ax.set_xlabel('Rating Source')
ax.set_ylabel('Average Rating')
ax.set_title('Average User Rating For Avengers: Age of Ultron (2015)')
ax.set_xticks(tick_position)   # x轴坐标位置
ax.set_xticklabels(num_cols, rotation=45)
ax.set_ylim(0,20)   # 坐标范围

  • 折线图
unrate = pd.read_csv("unrate.csv")
unrate["DATE"] = pd.to_datetime(unrate["DATE"])   # to.datetime:类型转换
print(unrate.head(12))
print(unrate.loc[0:12,'DATE'])
unrate['Month'] = unrate['DATE'].dt.month

# plt.figure(figsize=(x,y)):指定默认的画图区间 figsize=(横向长度,纵向长度):画图域的大小
# a = fig.add_subplot(x,y,index):前俩个参数确定共有多少个图像(行数,列数),第三个参数确定该图的位置(使用a.plot()进行画图)
fig = plt.figure(figsize=(6,4))   
plt.plot(unrate['Month'][0:12],unrate.loc[0:11,'VALUE'],c = 'red',label='1948')
plt.plot(unrate['Month'][0:12],unrate.loc[12:23,'VALUE'],c = 'blue',label='1949')
# plt.xticks(rotation=45)   # 坐标标识的样式
plt.xlabel('x_name')
plt.ylabel('y_name')
plt.title('title')
# ===============   =============
# Location String   Location Code
# ===============   =============
# 'best'            0 (程序自己决定放在什么位置好)
# 'upper right'     1
# 'upper left'      2
# 'lower left'      3
# 'lower right'     4
# 'right'           5
# 'center left'     6
# 'center right'    7
# 'lower center'    8
# 'upper center'    9
# 'center'          10
plt.legend(loc=0)
plt.show()

  • 条形图(bar)
reviews = 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]
num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
bar_heights = norm_reviews.loc[0,num_cols].values   # 列值

bar_positions = np.arange(5) + 1   # bar_position:每个点离原点的距离
tick_position = np.arange(1,6)

ax = plt.subplot()   # plt.subplot(222)   
ax.bar(bar_positions,bar_heights,0.7)   # 参数1:每个点离原点的距离;参数2:每个柱的高度;参数3:柱的宽度
# ax.barh(bar_positions,bar_heights,0.7)   # x,y轴互换
ax.set_xticks(tick_position)   # x轴坐标位置
ax.set_xticklabels(num_cols, rotation=45)

ax.set_xlabel('Rating Source')
ax.set_ylabel('Average Rating')
ax.set_title('Average User Rating For Avengers: Age of Ultron (2015)')

plt.show()

  • 散点图(scatter)
ax = plt.subplot()
ax.scatter(norm_reviews['Fandango_Ratingvalue'],norm_reviews['RT_user_norm'])
ax.set_xlabel('Fandango')
ax.set_ylabel('Rotten Tomatoes')
plt.show()

  • 直方图(hist)
# 与条形图的区别
# 条形图是用条形的长度表示各类别频数的多少,其宽度(表示类别)则是固定的;
# 直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。
# 由于分组数据具有连续性,直方图的各矩形通常是连续排列,而条形图则是分开排列。
# 条形图主要用于展示分类数据,而直方图则主要用于展示数据型数据。

ax = plt.subplot()

# range=(start_index,end_index)   bin:指定总共的柱形数
ax.hist(norm_reviews['Fandango_Ratingvalue'],range=(4,5),bins=20)
ax.set_ylim(0,20)   # 坐标范围

plt.show()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值