Matplotlib作业2

思考题

  1. primitives 和 container的区别和联系是什么?

primitives基本元素是容器中包含的元素,container是容器用来盛放primitives基本元素。

primitives中包含要绘制的基本元素:曲线、矩阵、图像、多边形、集合等;

container中包含了很多primitives基本元素,但同时也有自己的属性,是绘制的基础框架

  1. 四个容器的联系和区别是么?他们分别控制一张图表的哪些要素?

四个对象容器分别为Figure容器,Axes容器,Axis容器,Tick容器。

按照管理范围的关系:Figure > Axes > Axis > Tick

Figrue:是Artist最顶层的container-对象容器,包含了图表中的所有元素;

Axes:大量用于绘图的Artist存放在它内部,是matplotlib的核心;

Axis容器:管理坐标轴;

Tick容器: 最末端的容器对象,包含tick、grid line实例以及对应的label;

绘图题

# 数据导入代码
# 导入包
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 导入数据集并转成方便作图的格式
Dataset = pd.read_csv('data/Drugs.csv')
print(Dataset.head())
group = Dataset.groupby(['YYYY', 'State']).agg('sum').reset_index()
print(group.head())
df = group.pivot(index='YYYY', columns='State', values='DrugReports').reset_index()
print(df.head())
   YYYY State           COUNTY  SubstanceName  DrugReports
0  2010    VA         ACCOMACK   Propoxyphene            1
1  2010    OH            ADAMS       Morphine            9
2  2010    PA            ADAMS      Methadone            2
3  2010    VA  ALEXANDRIA CITY         Heroin            5
4  2010    PA        ALLEGHENY  Hydromorphone            5
   YYYY State  DrugReports
0  2010    KY        10453
1  2010    OH        19707
2  2010    PA        19814
3  2010    VA         8685
4  2010    WV         2890
State  YYYY     KY     OH     PA     VA    WV
0      2010  10453  19707  19814   8685  2890
1      2011  10289  20330  19987   6749  3271
2      2012  10722  23145  19959   7831  3376
3      2013  11148  26846  20409  11675  4046
4      2014  11081  30860  24904   9037  3280
from matplotlib.lines import Line2D
fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(111)

ax.patch.set_facecolor('#E9E9F1')
ax.plot(df.YYYY,df.KY,color='gray',linewidth=0.5)
ax.text(df.YYYY.values[-1],df.KY.values[-1],'KY',fontsize=8,color='gray')
ax.plot(df.YYYY,df.OH,color='gray',linewidth=0.5)
ax.text(df.YYYY.values[-1],df.OH.values[-1],'OH',fontsize=8,color='gray')
ax.plot(df.YYYY,df.PA,color='orange',linewidth=2)
ax.text(df.YYYY.values[-1],df.PA.values[-1],'PA',fontsize=8,color='orange')
ax.plot(df.YYYY,df.VA,color='gray',linewidth=0.5)
ax.text(df.YYYY.values[-1],df.VA.values[-1],'VA',fontsize=8,color='gray')
ax.plot(df.YYYY,df.WV,color='gray',linewidth=0.5)
ax.text(df.YYYY.values[-1],df.WV.values[-1],'WV',fontsize=8,color='gray')
ax.grid(color='#FFFFFF')
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.tick_params(bottom=False,right=False,left=False)
ax.set_xlabel("Year")
ax.set_ylabel("DrugReports")
ax.text(2009.7,49000,'Evolution of PA vs other states',color='orange',fontsize=8)
plt.show()

在这里插入图片描述

fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
x = np.linspace(0,10,1000)
y = -(x-2)*(x-8)+10
ax1.set_xlim(-0.5,10.5)
ax1.set_ylim(0,20.0)
ax1.plot(x,y,color='red',linewidth=2)
x2 = np.linspace(2,9,1000)
y2 = -(x2-2)*(x2-8)+10
ax1.fill_between(x2,0,y2,facecolor='#D3D3D3')
<matplotlib.collections.PolyCollection at 0x7ffb1cb785e0>

在这里插入图片描述

fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
x = np.linspace(0,10,1000)
y = -(x-2)*(x-8)+10
ax1.set_xlim(-0.5,10.5)
ax1.set_ylim(0,20.0)
ax1.plot(x,y,color='red',linewidth=2)
for i in np.arange(2,9,0.2):
    rect = plt.Rectangle((i,0),0.1,-(i-2)*(i-8)+10)
    rect.set_color('#D3D3D3')
    ax1.add_patch(rect)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值