pandas的使用之matplotlib

二维绘图

最简单的条形图

#导入集成的 pyplot
import matplotlib.pyplot as plt
#使用.plot方法画线性图,里面有很多参数,但第一个是x,第二个是y
#比如画出(1,5)(2,7)(3,4)三个点连成的图
plt.plot([1,2,3],[5,7,4])
plt.show()

在这里插入图片描述

标题和标签

#图例、标题和标签
x=[1,2,3]
y=[5,7,4]

x2=[1,2,3]
y2=[10,14,12]
#画两条线并分别标上名字
plt.plot(x,y,label='first_line')
plt.plot(x2,y2,label='second_line')
plt.xlabel('plot_number')#x轴的名称
plt.ylabel('important_var')#y轴名称
plt.title('insteresting_graph\ncheck_it_out')#标题
plt.legend()#生成默认图例,就是左上角那一块东西
plt.show()

在这里插入图片描述

条形图

#条形图
#使用bar画条形图,标上名称,更改颜色(g为绿色,b为蓝色,r为红色)
plt.bar([1,3,5,7,9],[5,2,7,8,2],label='example_one')
plt.bar([2,4,6,8,10],[8,6,2,5,6],label='example_two',color='g')
plt.legend()
plt.xlabel('bar_number')
plt.ylabel('bar_height')
plt.title('Epic_graph\nanother_line!_whoa')
plt.show()

在这里插入图片描述

直方图

#直方图
#直方图用来对一系列数据分类
population_ages = [22,55,62,45,21,22,34,42,42,4,99,102,110,120,121,122,130,111,115,112,80,75,65,54,44,43,42,48]
bins=[0,10,20,30,40,50,60,70,80,90,100,110,120,130]#bins表示x轴的点
plt.hist(population_ages,bins,histtype='bar',rwidth=0.8)#画图,rwidth表示柱状图的柱子宽度
plt.xlabel('x')
plt.ylabel('y')
plt.title('graph')
plt.show()

在这里插入图片描述

散点图

#散点图
x=[1,2,3,4,5,6,7,8]
y=[2,4,6,3,7,9,1,3]
plt.scatter(x,y,label='point',color='r',marker='v')#画图,marker表示点的形状,详情查看matplotlib.markers
plt.xlabel('x')
plt.ylabel('y')
plt.title('Interesting Graph\nCheck it out')
plt.legend()
plt.show()

在这里插入图片描述
matplotlib.markers网址

堆叠图

#堆叠图,用于显示部分对整体随时间的关系
#画出5天时间的分配情况
days=[1,2,3,4,5]
sleeping=[7,8,6,11,7]
eating=[2,3,4,3,2]
working=[7,8,7,2,2]
playing=[8,5,7,8,13]
plt.stackplot(days,sleeping,eating,working,playing,colors=['m','c','r','k'])
plt.xlabel('x')
plt.ylabel('y')
plt.title('graph')
plt.show()

在这里插入图片描述

为堆叠图添加注释

#上图不能看出来哪个颜色代表哪个动作
#那么我们可以利用线型图中的label,但是我们画线型图的时候画的是空行
plt.plot([],[],color='m', label='Sleeping', linewidth=5)
plt.plot([],[],color='c', label='Eating', linewidth=5)
plt.plot([],[],color='r', label='Working', linewidth=5)
plt.plot([],[],color='k', label='Playing', linewidth=5)
plt.stackplot(days,sleeping,eating,working,playing,colors=['m','c','r','k'])
plt.xlabel('x')
plt.ylabel('y')
plt.title('graph')
plt.legend()
plt.show()

在这里插入图片描述

饼图

#饼图
slices=[7,2,2,13]#饼图每个部分的相对大小
activities=['sleeping','eating','working','playing']
cols=['c','m','r','b']
#画图,startangle表示第一条起始角度画的位置,90°表示第一条竖直切割
#shadow为True表示增加一个字符的阴影,explode能把其中一个切片拉出来,如下代码,第二个是0.1,那么eating被拉出来
#autopct='%1.1f%%'表示把百分比放置在图表上面
plt.pie(slices,labels=activities,colors=cols,startangle=90,shadow=True,explode=(0,0.1,0,0),autopct='%1.1f%%')
plt.title('graph')
plt.show()

在这里插入图片描述

读取csv文件画图

import pandas as pd
from matplotlib import pyplot as plt
df=pd.read_csv('date.csv',usecols=['year','week'])
plt.plot(df['week'],df['year'],label='line01')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Interesting Graph\nCheck it out')
plt.legend()
plt.show()

在这里插入图片描述

进阶版

matplotlib二维绘图网址

三维绘图

基本代码框架

每次都要写的代码

#3D绘图
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig=plt.figure()#自定义图像宽高颜色等,什么参数也不写表示使用默认值
ax = fig.gca(projection='3d')
#fig.gca是获取图中的当前极轴。如果不存在,或者不是极轴,则将创建相应的轴,然后返回。
#此时得到的ax对象的类型是Axes3D的子类,这个对象将是绘制3D图形的入口。

最简单的3D绘图

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig=plt.figure()#自定义图像宽高颜色等,什么参数也不写表示使用默认值
ax = fig.gca(projection='3d')
import numpy as np
# 定义一些三维数据
x = np.array([1,2,3,4,5,6,7,8,9,10])
y = np.array([5,6,7,8,2,5,6,3,7,2])
z = np.array([1,2,6,3,2,7,3,3,7,2])
ax.plot(x,y,z)
plt.show()

在这里插入图片描述

散点图

#散点图
fig=plt.figure()
ax=fig.gca(projection='3d')
x = np.array([1,2,3,4,5,6,7,8,9,10])
y = np.array([5,6,7,8,2,5,6,3,7,2])
z = np.array([1,2,6,3,2,7,3,3,7,2])
ax.scatter(x,y,z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()

在这里插入图片描述

平面图

先导知识

import numpy as np

x = np.arange(1, 4)
y = np.arange(11, 16)
print(x)
print(y)

X, Y = np.meshgrid(x, y)#将x,y变成5x3的矩阵,即把x复制5行,把y复制3列
print(X)
print(Y)

在这里插入图片描述

线框图

#绘制图像z=−x3+y4,−10<x,y<10
fig=plt.figure()
ax=fig.gca(projection='3d')
x=np.arange(-10,10,0.8)#0.8是每个取值相差多少,可以省略
y=np.arange(-10,10,0.8)
X,Y=np.meshgrid(x,y)
Z=np.add(-np.power(X,3),np.power(Y,4))
surf=ax.plot_wireframe(X,Y,Z)
plt.show()

在这里插入图片描述

等高线

#绘制Z=−X4+Y4,−10<x,y<10函数的等高线
from matplotlib import cm
fig=plt.figure()
ax=fig.gca(projection='3d')
x=np.arange(-10,10,0.1)
y=np.arange(-10,10,0.1)
X,Y=np.meshgrid(x,y)
Z=np.add(-np.power(X,4),np.power(Y,4))
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.plot_wireframe(X,Y,Z,alpha=0.1)
ax.contour(X, Y, Z, cmap=cm.Accent, linewidths=2)
plt.show()

在这里插入图片描述

进阶版

matplotlib三维绘图网址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值