python图像绘制

关于一些python的作图方法总结

画图

柱状图

import matplotlib.pyplot as plt

# 示例数据
categories = ['Category A', 'Category B', 'Category C', 'Category D', 'Category E']
values = [15, 30, 10, 25, 20]

# 绘制柱状图
plt.bar(categories, values, color='blue')

# 添加标签和标题
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Bar Chart Example')

# 显示图形
plt.show()

在这里插入图片描述

散点图

单变量散点图

import matplotlib.pyplot as plt

# 生成示例数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 绘制散点图
plt.scatter(x, y, s=50, c='blue', marker='o', label='Data Points')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Scatter Plot Example')
plt.legend()
plt.show()

在这里插入图片描述

多变量间散点图

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

# 生成示例数据
np.random.seed(0)
num_samples = 100
variable_1 = np.random.rand(num_samples)
variable_2 = np.random.rand(num_samples)
variable_3 = np.random.rand(num_samples)

# 创建DataFrame
data = pd.DataFrame({'Variable 1': variable_1,
                     'Variable 2': variable_2,
                     'Variable 3': variable_3})

# 绘制散点矩阵
sns.pairplot(data)
plt.show()

在这里插入图片描述

三维散点图

from mpl_toolkits.mplot3d import Axes3D

x = np.random.rand(50)
y = np.random.rand(50)
z = np.random.rand(50)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.title('3D Scatter Plot')
plt.show()

在这里插入图片描述

六边形散点图

用来显示数据的分布密度,特别适用于大量数据点的可视化

import numpy as np
import matplotlib.pyplot as plt

x = np.random.randn(1000)
y = np.random.randn(1000)

plt.hexbin(x, y, gridsize=20, cmap='viridis')
plt.colorbar()
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Hexbin Plot')
plt.show()

在这里插入图片描述

饼图

labels = ['A', 'B', 'C', 'D']
sizes = [25, 30, 20, 15]

plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('Pie Chart')
plt.show()

在这里插入图片描述

直方图

data = np.random.randn(1000)

plt.hist(data, bins=20)
plt.xlabel('Values')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()

在这里插入图片描述

相关性热图

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

# 生成示例数据
np.random.seed(0)
num_samples = 100
variable_1 = np.random.rand(num_samples)
variable_2 = np.random.rand(num_samples)
variable_3 = np.random.rand(num_samples)
variable_4 = np.random.rand(num_samples)
variable_5 = np.random.rand(num_samples)

# 创建DataFrame
data = pd.DataFrame({'Variable 1': variable_1,
                     'Variable 2': variable_2,
                     'Variable 3': variable_3,
                     'Variable 4': variable_4,
                     'Variable 5': variable_5})

# 计算相关性矩阵
correlation_matrix = data.corr() # method='spearman','kendall','pearson'

# 绘制相关性热图
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('Correlation Heatmap')
plt.show()

在这里插入图片描述

  • annot:是否在热图中显示数值。
  • vminvmax:设置颜色映射的最小和最大值。
  • center:如果设置为某个值,将会在颜色映射中心标记出一个点,用于非对称颜色映射。
  • linewidthslinecolor:设置热图单元格之间的边界线宽和颜色。
  • square:是否将热图的单元格设置为正方形。

正态性检验

正态性检验用于检查数据是否符合正态分布(高斯分布)。正态分布在许多统计方法中是一个重要的假设。

Shapiro-Wilk检验

用于小样本数据的正态性检验

Kolmogorov-Smirnov检验

用于大样本数据的正态性检验。

QQ图

用于可视化数据分布与正态分布之间的差异。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import norm, probplot

# 生成正态分布样本
np.random.seed(0)
sample_size = 1000
mean = 0
std_dev = 1
data = np.random.normal(mean, std_dev, sample_size)

# 绘制直方图
plt.figure(figsize=(12, 6))
# 创建一个 1 行 3 列的子图,当前子图位于第一个位置。
plt.subplot(1, 3, 1)
# 设置 bins=30 表示将数据分成 30 个区间,设置 kde=True 表示同时绘制核密度估计曲线。
sns.histplot(data, bins=30, kde=True)

# 绘制QQ图
plt.subplot(1, 3, 2)
probplot(data, plot=plt)

# 绘制核密度估计图
plt.subplot(1, 3, 3)
sns.kdeplot(data)

# 调整子图布局
plt.tight_layout()
plt.show()

在这里插入图片描述

等高线图

用于显示一个二维函数在平面上的轮廓线。等高线图可以观察函数在不同位置的值变化。

x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

plt.contour(X, Y, Z, levels=20, cmap='viridis')
plt.colorbar()
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Contour Plot')
plt.show()

在这里插入图片描述

堆叠面积图

用于显示不同组的数据在不同时间或位置的堆叠关系。
堆叠面积图常用于比较多组数据的总体趋势,并展示每组数据的相对贡献。

x = np.arange(1, 6)
y1 = [1, 4, 6, 8, 9]
y2 = [2, 2, 7, 10, 12]

plt.stackplot(x, y1, y2, labels=['A', 'B'])
plt.legend(loc='upper left')
plt.title('Area Plot')
plt.show()

在这里插入图片描述

堆叠柱状图

用于同时比较两组数据在不同类别下的分布情况。堆叠柱状图常用于显示多组数据在多个类别中的分布关系。

#%%
import matplotlib.pyplot as plt

categories = ['A', 'B', 'C', 'D']
values1 = [15, 20, 10, 25]
values2 = [10, 18, 15, 20]

plt.bar(categories, values1, label='Values 1')
plt.bar(categories, values2, bottom=values1, label='Values 2')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Stacked Bar Plot')
plt.legend()
plt.show()

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值