python进阶(数据分析matplotlib库 一)

一、基础介绍 

 

 

--------------------------------------------------------------------------------
plt.plot(X, Y, 'b')                   -------- 'b'  蓝色
plt.plot(X, Y, 'bo')                  -------- 'bo' 蓝色圆形散点图
plt.plot(X, Y, 'bv')                  -------- 'bv' 蓝色三角散点图 
plt.plot(X, Y, 'bo--')                -------- 'bo--' 蓝色圆形连续图
--------------------------------------------------------------------------------
plt.plot([0, 80], [theta1 * 0 + theta0, theta1 * 80 + theta0], 'r--')
  •              结果图像如下

    

 

 

 

 二、常见图形

 

三、代码实例

     1、导入 

 

 

 

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']        ---------显示中文
mpl.rcParams['axes.unicode_minus'] = False
=======================================================================================
%matplotlib tk       --------图像在外部
%matplotlib inline   --------图像在内部

     2、代码

# 折线图 
# plt.plot(x,y)
# label 线条的图例
# color  颜色  颜色英文单词 或者16进制色
# linestyle 线条的形状  --虚线 - 实线 -.
# linewidth 线条的宽度
# marker  标记点形状
# 简写形式  "颜色标记点样式线条样式"


# plt.plot([1,2,3],[50,70,65])
x=np.arange(-3,3,0.5)
y=np.cos(x)
y1=np.sin(x)
plt.figure(figsize=(8,5))  # figure()  图形,可以理解为现实的画板
plt.plot(x,y,label="cos",color="red",linestyle=':',marker='o',linewidth=3)
plt.plot(x,y1,"b|-",label='sin')
plt.legend()
plt.show()  # 生成图形 
===================================================================================
# 3个人的成绩
# plt.plot()
# plt.xticks() plt.yticks() 设置刻度
# plt.xlabel()  plt.ylabel() 设置x轴y轴标签显示
# plt.xlim()  plt.ylim() 设置范围

# 在图形化界面中显示
# %matplotlib tk
# 在行内显示
# %matplotlib inline
persons=['Tom','jerry','anne']
scores=[90,88,37]
plt.plot(range(len(persons)),scores)
plt.xticks(range(len(persons)),persons) # 设置刻度  如果写了一个参数,那么就把参数的值当成刻度 ,如果写了两个值,把第一个作为绘图位置,第二个作为显示的效果
override = {
   'fontsize'            : 'small',
   'verticalalignment'   : 'center',
   'horizontalalignment' : 'left',
   'rotation':'horizontal',
    "align":"right",
}

plt.xlabel("姓名",override)
plt.ylabel("分数")
plt.ylim(0,120)
plt.title("成绩折线图")
ax=plt.gca()
ax.spines['right'].set_color("none")
ax.spines['top'].set_color("none")
plt.show()

    3、实例

              实例1:

plt.figure(figsize=(10,6))         ------------ 创建画板对象
inDatas = [600,700,800]
outDatas = [500,900,1000]
index = np.arange(0,len(inDatas))   ----------- 生成x轴的数字字段,建议先生成数字字段再修改为字符串字段
width = 0.2/2
x1_index = index - width/2
x2_index = index + width/2

plt.bar(x1_index,inDatas,width = width,label = '进口数据 单位/美元')
plt.bar(x2_index,outDatas,width = width,label = '出口数据 单位/美元')
plt.xticks(index,['一月份','二月份','三月份'])   ------------- 修改x轴的字段名
for i in range(len(inDatas)):          -----------标记数据数值
    plt.text(x1_index[i]-0.025,inDatas[i]+10,str(inDatas[i]))
for i in range(len(outDatas)):
    plt.text(x2_index[i]-0.025,outDatas[i]+10,str(outDatas[i]))
plt.xlabel('季度/月')       ---------x,y轴标签
plt.ylabel('数据量') 
plt.title('季度数据量')     ------------- 标题
  

ax = plt.gca()          -------------- 去掉上下框
ax.spines['top'].set_color('None')
ax.spines['right'].set_color('None')

plt.legend()          -------------- 显示图例
plt.show()            -------------- 显示图像

            实例2:

 

 4、Series 与 DataFrame中的 .plot()方法:

inDatas = [600,700,800]
outDatas = [500,900,1000]
df_data = pd.DataFrame([inDatas,outDatas],index=['进口数据','出口数据'],columns = ['第一季度','第二季度','第三季度'])
df_data.plot(kind = 'bar')                  #  ------------------- DataFrame 对象的 .plot() 方法
plt.show()

5、matplotlib 画多元函数

              https://blog.csdn.net/liuxiao214/article/details/78975792  ------------------ 二维及三维图像

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D          -----  导入3d方法
from matplotlib import cm
def func(x,y):                        # 自定义函数数
    return 0.3+x -2*y
fig = plt.figure()
ax = Axes3D(fig)                    ----- 3d对象
x1 = np.arange(0,4,1)
x2 = np.arange(0,5,1)
X,Y = np.meshgrid(x1,x2)            ----- x1,x2网格化函数,结果是一个二(多维,根据自变量维度)维数组
print(X,Y)
point = list(zip(X.flatten(),Y.flatten())) -----  映射坐标点,如果直接利用numpy元素级操作则不需要映射坐标点
print(point)
z = np.array(list(map(lambda t:func(t[0],t[1]),point))) ----- 计算z函数值
z.shape = X.shape     --------- 这一步很重要,将z的维度转化为与X相同的维度
ax.plot_surface(X,Y,z)      --------  画出图形(它只能画二维自变量的图形)
plt.show()
================================== 另一种做法:numpy的元素级操作 ========================
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

fig = plt.figure()
ax = Axes3D(fig)
x1 = np.arange(0,4,1)
x2 = np.arange(0,5,1)
X,Y = np.meshgrid(x1,x2)
z = 0.3+X-2*Y             --------- 元素级操作函数
ax.plot_surface(X,Y,z)
plt.show()

 

from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from matplotlib import pyplot as plt
 
fig = plt.figure()
ax = Axes3D(fig)             ----------- 3d对象
x=np.arange(-2*np.pi,2*np.pi,0.1)
y=np.arange(-2*np.pi,2*np.pi,0.1)
X, Y = np.meshgrid(x, y)    #网格的创建,这个是关键
Z=np.sin(X)*np.cos(Y)       ------------ 元素级操作
plt.xlabel('x')
plt.ylabel('y')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')   ------- 后面的参数是颜色
plt.show()

 

 

         

================ 三维空间散点图 ===============================
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
X = np.array([[10,1],[20,1],[30,1],[30,2],
    [70,3],
    [70,2]
])
Y = np.array([[0.8],[1.8],[2.2],
    [2.5],
    [5.5],
    [5.2]
])
def plot_(X,Y):
    x =  X[:,0].reshape((-1,1))
    y =  X[:,1].reshape((-1,1))
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.scatter(x,y, Y)
    plt.show()
    print(x,y)
plot_(X,Y)
    fig = plt.figure(facecolor='w')
    x_list = np.array(x_list).reshape(-1)
    y_list = np.array(y_list).reshape(-1)
    print(x_list)
    print(y_list)
    ax = Axes3D(fig)
    Z = F_xy(x_list,y_list).reshape(-1)
    print(Z)

    X1 = np.arange(-10, 11, 0.2)
    X2 = np.arange(-10, 11, 0.2)
    X1, X2 = np.meshgrid(X1, X2)
    Z2 = np.array(F_xy(X1, X2))
    Z2.shape = X1.shape

    # 画图

    ax.plot_surface(X1, X2, Z2, rstride=1, cstride=1, cmap=plt.cm.jet)  ------- 三维空间的平面图
================ 三维空间点线图 ===============================
    plt.plot(x_list,y_list,Z,'ro-')      ---------- 三维空间的点线图 (plot 需要一维的参数)
    plt.show()


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值