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()

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

热力图

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()

效果图

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

参数控制:

  • 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")

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

三维绘图

  • 引入 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()

Python数据可视化详解(2/5)--------热力图与三维绘图
  • 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")

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

Original: https://blog.csdn.net/Chandler_river/article/details/124557628
Author: River Chandler
Title: Python数据可视化详解(2/5)——–热力图与三维绘图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/764627/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球