Python数据可视化详解(2/5)--------色图与三维绘图

pcolor 和 imshow

contour 和 contourf

应用时应当使用 help 函数 仔细核对

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl

x = y = np.linspace(-5,5,100)
x,y = np.meshgrid(x,y)
z = x+y

norm = mpl.colors.Normalize(-abs(z).max(),abs(z).max())
fig,axes = plt.subplots(2,2,figsize=(8,8))

axes[0][0].pcolor(x,y,z)

axes[1][0].contourf(x,y,z,10)

axes[1][1].contour(x,y,z,10)

plt.show()

 

热力图 

import matplotlib.pyplot as plt
import numpy as np

#注意!
data = np.array([[5.17,4.53,3.86,3.48,3.11,2.82,2.54,0,0,0,0,0],[4.05,3.84,3.40,3.10,2.81,2.53,2.31,2.11,0,0,0,0],[3.22,3.26,2.96,2.75,2.52,2.26,2.07,1.91,1.60,0,0,0],[2.70,2.64,2.50,2.33,2.17,2.00,1.84,1.68,1.38,1.28,0,0],[2.29,2.18,2.08,1.94,1.84,0.17,1.54,1.46,1.19,1.1,0,0],[1.76,1.76,1.68,1.60,1.50,1.41,1.30,1.24,0.99,0.93,0.87,0],[1.35,1.37,1.31,1.22,1.16,1.11,1.01,0.97,0.78,0.72,0.67,0.67],[1.02,1.06,0.97,0.93,0.87,0.81,0.79,0.75,0.61,0.54,0.52,0.50],[0.66,0.66,0.58,0.54,0.54,0.49,0.49,0.48,0.38,0.33,0.32,0.31],[0.34,0.31,0.23,0.21,0.23,0.2,0.23,0.22,0.16,0.14,0.14,0.13],[0,0.05,0.12,0.15,0.12,0.09,0.05,0.03,0.04,0.07,0.05,0.05]]) #设置二维矩阵
f,ax = plt.subplots(figsize=(11,12))
#数据


#注意!
sns.heatmap(data, ax=ax,vmin=0,vmax=6,cmap='YlOrRd',annot=True,linewidths=2,cbar=True)
#热力图绘制代码


plt.title('heatmap') 
plt.ylabel('y_label')  
plt.xlabel('x_label')  


label_y = plt.get_yticklabels()
label_x = plt.get_xticklabels()

plt.show()

效果图

参数控制:

  • heatmap后第一个参数---------上面的数据集
  • ax参数--------在哪张图上绘制
  • cbar--------是否显示刻度条
  • vmin和vmax--------右侧刻度条的范围
  • annot=True(False)--------表示在对应位置(不)显示你的数据
  • linewidths--------控制临近的两个方块的距离
  • cmap--------控制渐变色

如下表(加r就是反着来的.....)


GnBu      由绿变蓝      summer       由黄到绿         Wistia     蓝绿黄


YIOrRd   红橙黄         summer_r     由绿到黄         coolwarm   蓝到红


hot          黄红黑        hot_r              黑红黄


例子

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

P2 = np.linspace(0,1,300)
P3 = np.linspace(0,1,300)
x,y =  np.meshgrid(P2,P3)
M = 3
z = x*y**(M-1)/(1-x)/((1-y)**(M-1))
g,ax = plt.subplots(figsize=(46,29))
sns.heatmap(z,ax=ax,vmin=0,vmax=1,cmap='YlOrRd',annot=False,linewidths=0,cbar=True,xticklabels=False,yticklabels=False)
plt.xlabel("P2")
plt.ylabel("P3",rotation=True)
plt.title("the value of polynomial above where M="+str(M))
plt.show()
#plt.savefig("0.jpg")

三维绘图

  • 引入 matplotlib 并设置中文显示和负号显示
import matplotlib.pyplot as plt
import numpy as np
import random

import matplotlib
matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
matplotlib.rcParams["axes.unicode_minus"] = False
  •  设置图纸
fig = plt.figure()
#比二维图多一个“pro”
#位置参数也能加
ax = fig.add_subplot(1,2,1,projection="3d")
ax2 = fig.add_subplot(1,2,2,projection="3d")
  • 绘制直线与散点图
    • 绘制直线
#利用numpy生成一等差数列
t = np.linspace(-10,10)
z = 2*t
x = t
y = t
ax.plot(x,y,z,label="line plots")
ax.legend()
  •  
    • 绘制散点图
x,y,z = [random.random() for i in range(10)],\
        [random.random() for i in range(10)],\
        [random.random() for i in range(10)]
ax2.scatter(x,y,z,s=5,c="r")
plt.show()

  •  plot_surface 绘制曲面 
x = np.linspace(-10,10,100)
y = np.linspace(-10,10,100)

X,Y = np.meshgrid(x,y)
Z1 = X * Y
Z2 = X + Y
ax.plot_surface(X,Y,Z1)
ax2.plot_surface(X,Y,Z2)
plt.savefig("0.jpg")

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

River Chandler

谢谢,我会更努力学习工作的!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值