-
2020-10-28 21:15:38
本文主要讲述如何使用Python操作Excel绘制柱形图。
开发工具,环境
PyCharm
Python3
Office Excel
前面我们已经创建好了一张Excel表。
现在我们要根据已有的数据,往里面添加柱形图。
柱形图 BarChart
参考《Python openpyxl Excel绘制柱形图》得知,我们主要使用BarChart与BarChart3D类。
图表中许多的细节由BarChart属性控制。
后文都以chart1来表示柱形图对象 chart1 = BarChart() 。
数据来源范围 Reference
首先我们应该确定数据的范围。有数据才好绘图。这里使用的是Reference类来表示数据"引用”范围。
data1 = Reference(st, min_col=2, min_row=1, max_row=7, max_col=3)
cats1 = Reference(st, min_col=1, min_row=2, max_row=7)
需要注意的是,范围的下标是从1开始的。
这里的data1把标题也框进去了。设定数据的时候,需要设置titles_from_data=True
chart1.add_data(data1, titles_from_data=True)
设置种类使用set_categories方法,也是把一个范围(Reference)的数据传入。
chart1.set_categories(cats1)
柱子方向控制 type
方向由属性type来控制,有2个可选参数:bar表示横向,col表示竖直。
chart1.type = "bar" # 横向柱形图
chart1.type = "col" # 纵向柱形图
标题 title
属性title控制标题。如果置为None则不显示标题。
图表的标题 chart1.title = "日均值对比"
坐标的标题,首先需要拿到x,y的坐标。
chart1.y_axis.title = '数值'
chart1.x_axis.title = st.cell(column=1, row=1).value # 直接用单元格的内容做标题
添加图表
add_chart将图表添加到sheet中。图表的左上角对齐某个单元格。下面是对齐A8。
st.add_chart(chart1, 'A8')
3D柱形图 BarChart3D
柱子的形状 shape
默认是立方体,但也可以从下面的形状里选一个。
{'box', 'pyramid', 'pyramidToMax', 'coneToMax', 'cone', 'cylinder'}
chart1.type = 'cone'
box 是立方体,中规中矩。
pyramid 是金字塔,顶部也是尖的。
cone 是圆锥,看起来很尖锐。
cylinder 是圆柱。
配色风格 style
style 会影响图表的配色风格,一般用10比较多彩多样。
代码示例
绘制2D柱形图
def create_bar_chart_1(file_path):
"""
插入柱形图
:param file_path: Excel 文件路径
:return: None
"""
wb = load_workbook(file_path)
st = wb.active
data1 = Reference(st, min_col=2, min_row=1, max_row=7, max_col=3)
cats1 = Reference(st, min_col=1, min_row=2, max_row=7)
chart1 = BarChart()
chart1.type = "col"
chart1.style = 9
chart1.title = "日均值对比"
# chart1.y_axis.title = '数值'
chart1.x_axis.title = st.cell(column=1, row=1).value
chart1.add_data(data1, titles_from_data=True)
chart1.set_categories(cats1)
chart1.shape = 0
st.add_chart(chart1, 'A8')
wb.save(file_path)
绘制3D柱形图
def create_bar_chart_2(file_path):
"""
插入3D柱形图
:param file_path: Excel 文件路径
:return: None
"""
wb = load_workbook(file_path)
st = wb.active
data1 = Reference(st, min_col=2, min_row=1, max_row=7, max_col=3)
cats1 = Reference(st, min_col=1, min_row=2, max_row=7)
chart1 = BarChart3D()
chart1.type = "bar"
chart1.style = 10
chart1.title = "日均值对比"
chart1.x_axis.title = None
chart1.shape = 'cylinder'
chart1.add_data(data1, titles_from_data=True)
chart1.set_categories(cats1)
st.add_chart(chart1, 'A26')
wb.save(file_path)
运行结果示例图片
更多相关内容 -
如何用Python绘制3D柱形图
2020-09-17 11:16:20主要介绍了如何用Python绘制3D柱形图,帮助大家更好的利用python实现数据可视化,感兴趣的朋友可以了解下 -
使用pandas中的DataFrame数据绘制柱状图的方法
2020-09-20 15:30:21下面小编就为大家分享一篇使用pandas中的DataFrame数据绘制柱状图的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
C#读数据库内容绘制柱形图
2021-03-16 00:54:20C#根据数据库中的内容绘制出柱形图,在统计分析及报表设计中使用广泛的一项小技巧,在些提醒:请连接上数据库后再做测试,否则不能显示柱状图。数据库内容文件在database文件夹下。 运行环境:Visual Studio2010 -
Qt4中学习使用QtCharts绘图四:绘制柱状图
2021-08-08 18:29:54Qt4中学习使用QtCharts绘图四:绘制柱状图 -
柱状图V3_Labviewhistogram_labview.柱形图_labview柱状图_labview柱状图
2021-09-10 21:19:15用Labview做柱状图,可以做数据分析用 -
网页,html5,canvas,js 动态绘制柱形图
2015-05-31 12:37:27网页,html5,canvas,js 动态绘制柱形图 -
Python实现绘制双柱状图并显示数值功能示例
2020-09-20 08:17:36主要介绍了Python实现绘制双柱状图并显示数值功能,涉及Python数值运算及基于matplotlib的图形绘制相关操作技巧,需要的朋友可以参考下 -
python使用matplotlib绘制柱状图教程
2021-01-20 05:03:49小编之前也和大家分享过python使用matplotlib实现的折线图和制饼图效果,感兴趣的朋友们也可以点击查看,下面来看看python使用matplotlib绘制柱状图的方法吧,具体如下: 1. 基本的柱状图 import matplotlib.pyplot... -
Qt 柱状图绘制
2018-03-21 20:11:34对柱状图的绘制进行封装,通过类函数setValue进行传值,根据所传的值的大小绘制不同高度的柱状图,并在柱状图顶部显示具体数值,纵坐标标有刻度,功能实现简单明了,工程文件下载即可运行。 -
javafx绘制柱状图
2018-05-10 11:41:02利用javafx绘制基础柱状图,利用eclipse开发,适合java初学者 -
原生PHP绘制高质量的柱状图、饼状图、折线图。
2021-09-18 15:34:19采用封装类库绘制,基于PHP原生GD库。 -
iOS使用Charts框架绘制柱形图
2020-08-31 20:06:29本文主要介绍了iOS使用Charts框架绘制柱形图的方法,具有一定的参考价值,下面跟着小编一起来看下吧 -
python使用Plotly绘图工具绘制柱状图
2020-09-19 12:10:05主要为大家详细介绍了python使用Plotly绘图工具绘制柱状图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
python绘制双柱形图代码实例
2020-09-20 23:44:26主要介绍了python绘制双柱形图代码实例,具有一定借鉴价值,需要的朋友可以参考下。 -
Python 堆叠柱状图绘制方法
2020-09-18 23:28:27主要介绍了Python 堆叠柱状图绘制方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
Python绘制堆叠柱状图的实例
2020-12-31 21:27:02有个朋友要求帮忙绘制堆叠柱状图,查阅了一些文档之后也算是完成了,只是一个小demo,下面我就记录一下。 1.什么是堆叠柱状图 与并排显示分类的分组柱状图不同,堆叠柱状图将每个柱子进行分割以显示相同类型下各个... -
使用Python中的pyecharts库读取json文件绘制折线图-柱状图
2021-01-20 03:09:48效果展示 Python代码 import json from pyecharts import Bar, Line, Overlap f = open('overlaps.json', encoding='gbk') data = json.load(f) date = data['date'] sales1 = data['sales1'] ... -
Java使用JFreeChart绘制柱形图
2021-03-11 12:29:48JFreeChart是JAVA平台上的一个开放的图表绘制类库。...JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产...JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。
JFreeChart截止2011年2月22日为止的相当不错的java图形解决方案,基本能够解决目前的图形方面的需求。本文着重对JFreeChart在Swing客户端界面实现柱形图进行介绍,其它统计图表的使用方法类似,读者可以参考JFreeChart提供的API。程序实现的效果如图:
Java代码:
package Test.JFreeChar;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategorySeriesLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
/**
* JFreeChar柱形图
*
*/
public class BarChartDemo extends ApplicationFrame {
private static final long serialVersionUID = 1L;
public BarChartDemo(String paramString) {
super(paramString);
JPanel localJPanel = createDemoPanel();
localJPanel.setPreferredSize(new Dimension(500, 270));
setContentPane(localJPanel);
}
/**
* 准备绘制柱形图使用的数据集
*/
private static CategoryDataset createDataset() {
String str1 = "First";
String str2 = "Second";
String str3 = "Third";
String str4 = "Category 1";
String str5 = "Category 2";
String str6 = "Category 3";
String str7 = "Category 4";
String str8 = "Category 5";
DefaultCategoryDataset localDefaultCategoryDataset = new DefaultCategoryDataset();
localDefaultCategoryDataset.addValue(1.0D, str1, str4);
localDefaultCategoryDataset.addValue(4.0D, str1, str5);
localDefaultCategoryDataset.addValue(3.0D, str1, str6);
localDefaultCategoryDataset.addValue(5.0D, str1, str7);
localDefaultCategoryDataset.addValue(5.0D, str1, str8);
localDefaultCategoryDataset.addValue(5.0D, str2, str4);
localDefaultCategoryDataset.addValue(7.0D, str2, str5);
localDefaultCategoryDataset.addValue(6.0D, str2, str6);
localDefaultCategoryDataset.addValue(8.0D, str2, str7);
localDefaultCategoryDataset.addValue(4.0D, str2, str8);
localDefaultCategoryDataset.addValue(4.0D, str3, str4);
localDefaultCategoryDataset.addValue(3.0D, str3, str5);
localDefaultCategoryDataset.addValue(2.0D, str3, str6);
localDefaultCategoryDataset.addValue(3.0D, str3, str7);
localDefaultCategoryDataset.addValue(6.0D, str3, str8);
return localDefaultCategoryDataset;
}
/**
* 创建JFreeChart
* @param paramCategoryDataset 数据集
* @return
*/
private static JFreeChart createChart(CategoryDataset paramCategoryDataset) {
JFreeChart localJFreeChart = ChartFactory.createBarChart(
"Bar Chart Demo 1", "Category", "Value", paramCategoryDataset,
PlotOrientation.VERTICAL, true, true, false);
CategoryPlot localCategoryPlot = (CategoryPlot) localJFreeChart
.getPlot();
localCategoryPlot.setDomainGridlinesVisible(true);
localCategoryPlot.setRangeCrosshairVisible(true);
localCategoryPlot.setRangeCrosshairPaint(Color.blue);
NumberAxis localNumberAxis = (NumberAxis) localCategoryPlot
.getRangeAxis();
localNumberAxis.setStandardTickUnits(NumberAxis
.createIntegerTickUnits());
BarRenderer localBarRenderer = (BarRenderer) localCategoryPlot
.getRenderer();
localBarRenderer.setDrawBarOutline(false);
GradientPaint localGradientPaint1 = new GradientPaint(0.0F, 0.0F,
Color.blue, 0.0F, 0.0F, new Color(0, 0, 64));
GradientPaint localGradientPaint2 = new GradientPaint(0.0F, 0.0F,
Color.green, 0.0F, 0.0F, new Color(0, 64, 0));
GradientPaint localGradientPaint3 = new GradientPaint(0.0F, 0.0F,
Color.red, 0.0F, 0.0F, new Color(64, 0, 0));
localBarRenderer.setSeriesPaint(0, localGradientPaint1);
localBarRenderer.setSeriesPaint(1, localGradientPaint2);
localBarRenderer.setSeriesPaint(2, localGradientPaint3);
localBarRenderer
.setLegendItemToolTipGenerator(new StandardCategorySeriesLabelGenerator(
"Tooltip: {0}"));
CategoryAxis localCategoryAxis = localCategoryPlot.getDomainAxis();
localCategoryAxis.setCategoryLabelPositions(CategoryLabelPositions
.createUpRotationLabelPositions(0.5235987755982988D));
return localJFreeChart;
}
/**
* 创建显示柱形图的面板
* @return
*/
public static JPanel createDemoPanel() {
JFreeChart localJFreeChart = createChart(createDataset());
return new ChartPanel(localJFreeChart);
}
public static void main(String[] paramArrayOfString) {
BarChartDemo localBarChartDemo1 = new BarChartDemo(
"JFreeChart: BarChartDemo1.java");
localBarChartDemo1.pack();
RefineryUtilities.centerFrameOnScreen(localBarChartDemo1);
localBarChartDemo1.setVisible(true);
}
}
至此,使用JFreeChart实现的统计柱形图便完成了,JFreeChart为统计图的显示提供了方便的接口,后续文章将会介绍使用JFreeChart实现其它统计图。
【发表评论0条 】
-
Qt绘制柱状图,可以通用
2018-07-05 11:10:34这个程序包实现了使用QT、Qwt进行柱状图的呈现,同时可以使用鼠标拖动和显示柱状图的纵坐标 -
C# 绘制统计图大全(柱状图, 折线图, 扇形图)
2020-09-01 06:36:05本篇文章介绍了C# 绘制统计图大全,其中包括状图, 折线图, 扇形图,有需要的同学可以了解一下。 -
matlab如何画柱状图?matlab绘制柱状图教程
2021-04-18 06:49:22在很多的报告、年鉴等中我们常看到柱状图。柱状图也称条图、长条图,是一种以长方形的长度为变量的表达图形的统计报告图,只有一个变量,通常利用于较小的数据集分析。下面我就向大家介绍一下如何画散点图。工具/...在很多的报告、年鉴等中我们常看到柱状图。柱状图也称条图、长条图,是一种以长方形的长度为变量的表达图形的统计报告图,只有一个变量,通常利用于较小的数据集分析。下面我就向大家介绍一下如何画散点图。
工具/原料
matlab软件
电脑
方法/步骤
1、常见的柱状图。可以画柱状图的软件有很多,例如常用的excel、origin等都可以话柱状图,而且都很漂亮。下面先向大家展示一种柱状图吧!
2、用matlab生成数据,也可以通过其他方式查找数据:
3、下面就是画图了,使用的matlab指令是:bar(y,0.2) %参数中y表示数据,0.2表示柱状图中柱子的宽度,只不过画出来的图好像太细了。如下图所示:
4、下面我们不指定宽度,直接采用默认值,即输入时只输入数据y(颜色也是默认值),看一下效果。从图中可以看出效果好多了。
5、下面我们就对出行坐一下处理,让他分别显示蓝色和红色分别代表什么,x轴和y轴分别代表什么,这里也可以重新设置颜色。具体的设置代码为:
set(gca,'XTickLabel',{'2002','2004','2006','2008','2010','2012'}) %设置x轴所代表大时间
xlabel('时间'),ylabel('净利润') %设置x轴和y轴的名称
legend('前半年','后半年') %区分一下蓝色和红色分别代表什么
6、下图是上一步处理后的图片,如下图所示:
7、请大家支持*西楚霸王1990*原创经验,觉得本篇作品对你有所帮助的朋友请动动手指支持我吧。
欢迎把知识和经验分享给更多需要它的人!
END
以上就是matlab绘制柱状图教程,希望对大家有所帮助!
-
python调用matplotlib模块绘制柱状图
2021-01-01 14:41:03# 绘制柱形图 # left:柱形图的x坐标 # height柱形图的高度,以0.0为基准 # width:柱形图的宽度,默认0.8 # facecolor:颜色 # edgecolor:边框颜色n # bottom:表示底部从y轴的哪个刻度开始画 # yerr:应该是对应的数据... -
python3+PyQt5实现柱状图
2020-12-25 21:55:09本文通过Python3+pyqt5实现了python Qt GUI 快速编程的16章的excise例子。 #!/usr/bin/env python3 import random import sys from PyQt5.QtCore import (QAbstractListModel, QAbstractTableModel, ...