文章目录
- import pandas as pd import numpy as np from pyecharts.charts import Bar from pyecharts import options as opts # 读取Excel数据 df = pd.read_excel(“data.xlsx”) data = df[“数值列”].tolist() # 假设数据列名为”数值列” # 计算直方图的区间和频数 counts, bins = np.histogram(data, bins=10) # 分10个区间 x_labels = [f”{bins[i]:.1f}-{bins[i+1]:.1f}” for i in range(len(bins)-1)] # 创建柱状图(模拟直方图) bar = Bar() bar.add_xaxis(x_labels) bar.add_yaxis(“频数”, counts.tolist()) # 配置全局选项 bar.set_global_opts( title_opts=opts.TitleOpts(title=”数值分布直方图”), xaxis_opts=opts.AxisOpts(name=”区间”), yaxis_opts=opts.AxisOpts(name=”频数”), toolbox_opts=opts.ToolboxOpts() ) # 渲染为HTML文件 bar.render(“pyecharts_histogram.html”)
- Bar(): 柱状图对象,用于模拟直方图。 np.histogram(): 计算直方图频数和区间(bins 指定区间数量)。 add_xaxis()/add_yaxis(): 添加 X/Y 轴数据。 set_global_opts(): 配置标题、坐标轴名称等。
- import pandas as pd import matplotlib.pyplot as plt # 读取Excel数据 df = pd.read_excel(“data.xlsx”) data = df[“数值列”] # 创建画布和坐标系 fig, ax = plt.subplots(figsize=(10, 6)) # 绘制直方图 ax.hist( data, bins=10, # 区间数量 color=”skyblue”, # 颜色 edgecolor=”black”, # 边框颜色 alpha=0.7, # 透明度 density=False # False显示频数,True显示频率 ) # 添加标题和标签 ax.set_title(“数值分布直方图”, fontsize=14) ax.set_xlabel(“数值范围”, fontsize=12) ax.set_ylabel(“频数”, fontsize=12) ax.grid(axis=”y”, linestyle=”–“) # 显示横向网格线 # 显示图表 plt.tight_layout() plt.savefig(“matplotlib_histogram.png”) plt.show()
- ax.hist(): 直方图绘制函数。 bins: 区间数量或具体边界值(如 bins=[0, 10, 20])。 color/edgecolor: 填充色和边框颜色。 alpha: 透明度(0-1)。 density: 是否显示频率(归一化)。 ax.set_title()/ax.set_xlabel()/ax.set_ylabel(): 标题和坐标轴标签。
- import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 读取Excel数据 df = pd.read_excel(“data.xlsx”) data = df[“数值列”] # 设置主题 sns.set_theme(style=”whitegrid”, font=”SimHei”) # 中文需指定字体 # 创建直方图 plt.figure(figsize=(10, 6)) ax = sns.histplot( data, bins=10, # 区间数量 kde=True, # 显示核密度曲线 color=”skyblue”, # 颜色 edgecolor=”black”, # 边框颜色 stat=”count” # 统计类型(默认count,可选”density”) ) # 添加标题和标签 ax.set_title(“数值分布直方图(带核密度估计)”, fontsize=14) ax.set_xlabel(“数值范围”, fontsize=12) ax.set_ylabel(“频数”, fontsize=12) # 显示图表 plt.tight_layout() plt.savefig(“seaborn_histogram.png”) plt.show()
- sns.histplot(): 直方图绘制函数。 kde: 是否显示核密度估计曲线(默认 False)。 stat: 统计类型("count" 频数,"density" 频率,"percent" 百分比)。 bins/color/edgecolor: 同 matplotlib。 sns.set_theme(): 设置主题样式(如 whitegrid、darkgrid)。
目录
- 1. 使用 pyecharts 绘制直方图
- 代码示例:
- 核心类与函数:
- 2. 使用 matplotlib 绘制直方图
- 代码示例:
- 核心函数与参数:
- 3. 使用 seaborn 绘制直方图
- 代码示例:
- 核心函数与参数:
- 对比总结
- 注意事项
以下将详细介绍如何使用 Python 的 pyecharts、matplotlib 和 seaborn 三个库从 Excel 中读取数据并绘制直方图(Histogram)。直方图用于展示数据分布,核心是统计不同区间的频数或频率。每个库的代码示例均包含核心类、函数和属性的详细说明。
pyecharts 是基于 ECharts 的交互式可视化库,但需手动计算直方图的频数分布(因无内置直方图函数)。
import pandas as pd
import numpy as np
from pyecharts.charts import Bar
from pyecharts import options as opts
# 读取Excel数据
df = pd.read_excel("data.xlsx")
data = df["数值列"].tolist() # 假设数据列名为"数值列"
# 计算直方图的区间和频数
counts, bins = np.histogram(data, bins=10) # 分10个区间
x_labels = [f"{bins[i]:.1f}-{bins[i+1]:.1f}" for i in range(len(bins)-1)]
# 创建柱状图(模拟直方图)
bar = Bar()
bar.add_xaxis(x_labels)
bar.add_yaxis("频数", counts.tolist())
# 配置全局选项
bar.set_global_opts(
title_opts=opts.TitleOpts(title="数值分布直方图"),
xaxis_opts=opts.AxisOpts(name="区间"),
yaxis_opts=opts.AxisOpts(name="频数"),
toolbox_opts=opts.ToolboxOpts()
)
# 渲染为HTML文件
bar.render("pyecharts_histogram.html")
Bar(): 柱状图对象,用于模拟直方图。
np.histogram(): 计算直方图频数和区间(bins 指定区间数量)。
add_xaxis()/add_yaxis(): 添加 X/Y 轴数据。
set_global_opts(): 配置标题、坐标轴名称等。
Bar(): 柱状图对象,用于模拟直方图。np.histogram(): 计算直方图频数和区间(bins 指定区间数量)。add_xaxis()/add_yaxis(): 添加 X/Y 轴数据。set_global_opts(): 配置标题、坐标轴名称等。
matplotlib 是基础绘图库,内置 hist() 函数直接绘制直方图。
import pandas as pd
import matplotlib.pyplot as plt
# 读取Excel数据
df = pd.read_excel("data.xlsx")
data = df["数值列"]
# 创建画布和坐标系
fig, ax = plt.subplots(figsize=(10, 6))
# 绘制直方图
ax.hist(
data,
bins=10, # 区间数量
color="skyblue", # 颜色
edgecolor="black", # 边框颜色
alpha=0.7, # 透明度
density=False # False显示频数,True显示频率
)
# 添加标题和标签
ax.set_title("数值分布直方图", fontsize=14)
ax.set_xlabel("数值范围", fontsize=12)
ax.set_ylabel("频数", fontsize=12)
ax.grid(axis="y", linestyle="--") # 显示横向网格线
# 显示图表
plt.tight_layout()
plt.savefig("matplotlib_histogram.png")
plt.show()
ax.hist(): 直方图绘制函数。
bins: 区间数量或具体边界值(如 bins=[0, 10, 20])。
color/edgecolor: 填充色和边框颜色。
alpha: 透明度(0-1)。
density: 是否显示频率(归一化)。
ax.set_title()/ax.set_xlabel()/ax.set_ylabel(): 标题和坐标轴标签。
ax.hist(): 直方图绘制函数。
bins: 区间数量或具体边界值(如bins=[0, 10, 20])。color/edgecolor: 填充色和边框颜色。alpha: 透明度(0-1)。density: 是否显示频率(归一化)。
ax.set_title()/ax.set_xlabel()/ax.set_ylabel(): 标题和坐标轴标签。
seaborn 基于 matplotlib,提供更简洁的语法和统计功能(如核密度估计)。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 读取Excel数据
df = pd.read_excel("data.xlsx")
data = df["数值列"]
# 设置主题
sns.set_theme(style="whitegrid", font="SimHei") # 中文需指定字体
# 创建直方图
plt.figure(figsize=(10, 6))
ax = sns.histplot(
data,
bins=10, # 区间数量
kde=True, # 显示核密度曲线
color="skyblue", # 颜色
edgecolor="black", # 边框颜色
stat="count" # 统计类型(默认count,可选"density")
)
# 添加标题和标签
ax.set_title("数值分布直方图(带核密度估计)", fontsize=14)
ax.set_xlabel("数值范围", fontsize=12)
ax.set_ylabel("频数", fontsize=12)
# 显示图表
plt.tight_layout()
plt.savefig("seaborn_histogram.png")
plt.show()
sns.histplot(): 直方图绘制函数。
kde: 是否显示核密度估计曲线(默认 False)。
stat: 统计类型("count" 频数,"density" 频率,"percent" 百分比)。
bins/color/edgecolor: 同 matplotlib。
sns.set_theme(): 设置主题样式(如 whitegrid、darkgrid)。
sns.histplot(): 直方图绘制函数。
kde: 是否显示核密度估计曲线(默认False)。stat: 统计类型("count"频数,"density"频率,"percent"百分比)。bins/color/edgecolor: 同matplotlib。
sns.set_theme(): 设置主题样式(如 whitegrid、darkgrid)。
| 库 | 特点 | 适用场景 |
|---|---|---|
pyecharts |
需手动计算频数,生成交互式图表 | 需要网页嵌入或动态交互 |
matplotlib |
直接绘制,高度可定制 | 需要精细控制图表细节 |
seaborn |
语法简洁,支持核密度估计 | 快速生成统计图表 |
- 数据预处理:确保 Excel 中的目标列是数值类型(非字符串)。
- 区间划分:调整
bins 参数优化数据分布展示(如 bins=20 增加细节)。
- 交互性:
pyecharts 适合生成 HTML 文件,而 matplotlib/seaborn 适合静态图片。
bins 参数优化数据分布展示(如 bins=20 增加细节)。pyecharts 适合生成 HTML 文件,而 matplotlib/seaborn 适合静态图片。到此这篇关于Python读取Excel绘制直方图的文章就介绍到这了,更多相关Python读取Excel绘制直方图内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Python获取excel的数据并绘制箱型图和直方图的方法实例
- Python实现多条件筛选Excel数据并批量绘制直方图
- Python中读取Excel最快的几种常见方法
- python使用openpyxl打开及读取excel表格过程
- Python读取和写入txt、Excel文件和JSON文件的方法
- 使用Python读取Excel数据并写入到CSV、XML和文本
- 使用Python第三方库xlrd读取Excel中的数据的流程步骤