Python绘制直方图实战:双列与单列数据可视化
本文详细演示了如何使用Python绘制直方图。通过读取Excel文件,分别展示了利用Matplotlib绘制双变量条形图以及结合NumPy与Pyecharts生成单变量频率分布直方图的具体代码。内容涵盖数据读取、参数设置及图表渲染,为数据可视化提供实用参考。
Python直方图绘制概述
本文分享Python绘制直方图的具体实现代码,供读者参考学习。
双列数据直方图绘制
首先介绍如何使用两列数据绘制直方图(条形图形式)。

#coding=gbk
import xlwings as xw
import pandas as pd
import matplotlib.pyplot as plt
#pd.set_option('display.max_columns', None) #解决表格多列时中间省略显示问题
#pd.set_option('display.max_rows', None) #解决表格多行时中间省略显示问题
#读取excel文件中的数据
app = xw.App(visible = False, add_book = False)
workbook = app.books.open("score1000.xlsx")
worksheet = workbook.sheets[0] #使用sheets()方法获取所有sheet页,加个序号获取某个sheet页
values = worksheet.range("A1").expand().options(pd.DataFrame, index = False).value
print(values)
workbook.close()
app.quit()
#绘制直方图
figure = plt.figure()
#plt.rcParams['font.sans-serif'] = ['SimHei'] #解决图表中中文显示问题
#plt.rcParams['axes.unicode_minus'] = False #解决图表中负号显示问题
x = values['total_score'] #指定X轴
y = values['interface_delta_B'] #指定Y轴
plt.bar(x, y, color = 'blue')
#设置图表参数
plt.xlabel('total_score', fontsize = 15, color = 'black') #设置x轴标签
plt.ylabel('interface_delta_B', fontsize = 15, color = 'green') #设置y轴标签
#plt.title('score', fontsize = 20) #设置标题
#plt.axis([-1, 6, -2, 2]) #可手动设置x轴y轴范围
#plt.grid(True) #设置网格
plt.show()
单列数据直方图绘制
接着展示如何基于单列数据绘制直方图,分析数据分布。
# coding=gbk
import pandas as pd
import matplotlib.pyplot as plt
from pyecharts import options as opts
from pyecharts.charts import Bar
import numpy as np
df = pd.read_excel("score1000.xlsx",engine='openpyxl')
#print(df["total_score"])
#使用matplotlib画图
# plt.figure()
# plt.hist(df["interface_delta_B"])
# plt.show()
hist,bin_edges = np.histogram(df["interface_delta_B"],bins=100)
# # print(bin_edges)
# # print(len(bin_edges))
# # print(len(hist))
bar=(
Bar()
.add_xaxis([str(x) for x in bin_edges[:-1]])
.add_yaxis("",[float(x) for x in hist],category_gap=0)
.set_global_opts(
title_opts=opts.TitleOpts(title="interface_delta_B",pos_left="center"),
legend_opts=opts.LegendOpts(is_show=False)
)
)
bar.render("F:total_score.html")
以上内容为本文的全部介绍,希望能为读者的学习和工作提供帮助,欢迎持续关注本站获取更多技术分享。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













