Python数据可视化(1)
使用matplotlib库解决图形编辑问题,Python数据可视化第一周作业答案
题目
1.在同一幅图上绘制 [-2π, 2π] 范围内的正弦和余弦曲线。
2.自行下载一个股票数据文件,用pandas读入数据,绘制某段时间内的收盘价折线图。
3.一张图上分4个子图,分别绘制圆形、正方形、三角形和直线。
4.随机产生一组具有线性关系y= 3*x + 2+a的点坐标,a为-2与2之间的一个随机数,绘制散点图。
5.用数据集 [2,5,8,6] 绘制饼图,要加上百分比,并突显数据项8。
6.分别绘制x=[1,2,3]和y=[3,5,8]对应的柱形图,水平条形图,堆积柱形图。
1.在同一幅图上绘制 [-2π, 2π] 范围内的正弦和余弦曲线
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-2*np.pi, 2*np.pi)
y1=np.sin(x)
y2=np.cos(x)
plt.plot(x,y1)
plt.plot(x, y2)
plt.grid(True)
plt.show()
2.自行下载一个股票数据文件,用pandas读入数据,绘制某段时间内的收盘价折线图
网易财经主页
这里可以下载股票数据
具体方式:
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv("E:/11111.csv",parse_dates=['日期'])
plt.plot(df.日期,df.收盘价)
plt.show()
3.一张图上分4个子图,分别绘制圆形、正方形、三角形和直线
import numpy as np
import matplotlib.pyplot as plt
'''绘制一个圆'''
fig=plt.figure() #创建一个Figure对象
ax1=fig.add_subplot(221) #创建一个2行2列的图形的第一个子图
x=np.linspace(-2,2,50) #[-2,2]之间生成50个x值
y=np.sqrt(4-x**2) #上半圆函数
ax1.axis('equal') #设置x,y轴比例相同
ax1.plot(x,y,x,-y) #整个圆
'''绘制一个正方形'''
ax2=fig.add_subplot(222) #第二个子图
x=[0,0,2,2,0]
y=[0,2,2,0,0] #从[0,0],[0,2],[2,2],[2,0],[0,0]画一个闭合正方形
ax2.axis('equal')
ax2.plot(x,y)
'''绘制一个三角形'''
ax3=fig.add_subplot(223)
x=[0,2,4,0]
y=[1,2,1,1] #绘制闭合三角形
ax3.plot(x,y)
'''绘制一条直线'''
ax4=fig.add_subplot(224)
x=np.arange(5)
ax4.plot(x,2*x)
4.随机产生一组具有线性关系y= 3*x + 2+a的点坐标,a为-2与2之间的一个随机数,绘制散点图
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-5,5,20)
y=3*x+2+(-2+np.random.rand(len(x))*4) #计算y值并加入随机干扰值
plt.scatter(x, y)
5.用数据集 [2,5,8,6] 绘制饼图,要加上百分比,并突显数据项8
import numpy as np
import matplotlib.pyplot as plt
data=np.array([2,5,8,6])
explode=[0,0,0.2,0]#定义饼图的标签,标签是列表
pie_lables=np.array(['2','5','8','6'])
plt.pie(data,explode=explode,radius=1.5,labels=pie_lables,autopct='%3.1f%%')
plt.show()
6.分别绘制x=[1,2,3]和y=[3,5,8]对应的柱形图,水平条形图,堆积柱形图
#柱形图
import numpy as np
import matplotlib.pyplot as plt
n=np.arange(3)
x=np.array([1,2,3])
y=np.array([3,5,8])
plt.bar(n,x,tick_label=(['a','b','c']),width=0.3)
plt.bar(n+0.3,y,width=0.3)
plt.show()
#堆积柱形图
import numpy as np
import matplotlib.pyplot as plt
n=np.arange(3)
x=np.array([1,2,3])
y=np.array([3,5,8])
plt.bar(n,x,tick_label=['a','b','c'],width=0.3)
plt.bar(n,y,bottom=x,width=0.3)
plt.show()
#水平柱形图
import numpy as np
import matplotlib.pyplot as plt
n=np.arange(3)
x=np.array([1,2,3])
y=np.array([3,5,8])
plt.barh(n,x,tick_label=(['a','b','c']),height=0.3)
plt.barh(n+0.3,y,height=0.3)
plt.show()