Windows11平台在VS2022上通过CMake安装C++绘图库ROOT库

Root库是一个功能强大的开源软件框架,用于数据分析、可视化和存储。它最初是为高能物理实验设计的,但现在已经广泛应用于各种科学领域和工程应用中。Root库使用C++编写,提供了许多用于数据处理和分析的工具和算法。它的核心功能包括数据存储、数据分析、绘图和可视化。

在数据存储方面,Root库提供了一个灵活的文件格式,称为ROOT文件。这种文件格式可以存储大量的数据对象,包括数字、直方图、图形等。它还支持数据的压缩和索引,以提高存储效率和访问速度。

在数据分析方面,Root库提供了丰富的工具和算法。它支持各种统计分析、拟合和优化算法,可以处理大型数据集和复杂的数据结构。Root库还提供了一些特殊的数据类型,如多维数组和树结构,以便更好地组织和处理数据。

在绘图和可视化方面,Root库提供了强大的绘图工具,可以绘制各种类型的图表和图形。它支持二维和三维绘图,可以生成高质量的科学图像。此外,Root库还提供了交互式图形界面,使用户能够直观地浏览和操作数据。

本篇博客通过安装Root库在VS2022上绘制一个简单的柱状图(博主使用的root库版本是6.30.06)。

首先在官网下载发行的ROOT包,选择64位的windows平台的.zip文件下载。

Releases - ROOT

然后解压到你的安装目录就可以了。

打开bin目录,并且通过管理员的身份允许thisroot.bat,然后会有一个黑窗一闪而过。

在系统环境变量的path变量里面新建一个目录。

打开控制台输入root指令,出现以下界面就安装成功了。

打开VS2022创建一个C++的CMake项目,项目名称为plottest,由于ROOT在VS2022中并不支持VS2022本身的包管理工具,所以只能借助CMake来导入ROOT库的头文件和静态链接库文件,如果你执意用VS2022本身的包管理工具极有可能出现error2019:不能识别标识符的问题。

以下是CMakeList.txt里面的代码, 将它复制到CMakeLitsts.txt中,并且重新生成CMake。

# CMakeList.txt: plottest 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)

# 如果支持,请为 MSVC 编译器启用热重载。
if (POLICY CMP0141)
  cmake_policy(SET CMP0141 NEW)
  set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
endif()

project ("plottest")
find_package(ROOT REQUIRED)
set(CMAKE_CXX_FLAGS "${ROOT_CXX_FLAGS}")
include(${ROOT_USE_FILE})
include_directories(${ROOT_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
link_directories(${ROOT_LIBRARY_DIR})
# 将源代码添加到此项目的可执行文件。
add_executable (plottest "plottest.cpp" "plottest.h")

if (CMAKE_VERSION VERSION_GREATER 3.12)
  set_property(TARGET plottest PROPERTY CXX_STANDARD 20)
endif()
target_link_libraries(plottest ${ROOT_LIBRARIES})
# TODO: 如有需要,请添加测试并安装目标。

plottest.cpp里面的代码如下,怎么说呢,这代码风格和Qt不能说只有一点像,只能说是完全一样。 

#include <iostream>
#include <TCanvas.h>
#include <TH1F.h>
#include <TApplication.h>

int main() {
	// 创建一个ROOT应用程序对象
	TApplication app("app", 0, nullptr);

	// 创建一个ROOT画布
	TCanvas* canvas = new TCanvas("canvas", "Bar Chart", 800, 600);

	// 创建一个1维直方图,用于绘制柱状图
	TH1F* histogram = new TH1F("histogram", "Bar Chart", 5, 0.5, 5.5);

	// 设置柱子的高度
	histogram->SetBinContent(1, 3);
	histogram->SetBinContent(2, 7);
	histogram->SetBinContent(3, 2);
	histogram->SetBinContent(4, 5);
	histogram->SetBinContent(5, 1);

	// 设置柱子的颜色
	histogram->SetFillColor(kBlue);

	// 绘制柱状图
	histogram->Draw("BAR");

	// 更新画布
	canvas->Update();

	// 进入ROOT事件循环
	app.Run();

	return 0;
}

运行代码,成功绘制了柱状图。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/644823.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

6.Redis之String命令

1.String类型基本介绍 redis 所有的 key 都是字符串, value 的类型是存在差异的~~ 一般来说,redis 遇到乱码问题的概率更小~~ Redis 中的字符串,直接就是按照二进制数据的方式存储的. (不会做任何的编码转换【讲 mysql 的时候,知道 mysql 默认的字符集, 是拉丁文,插入中文…

等保2.0看这一篇就够了

一、等级保护介绍 1.1什么是等级保护 网络安全等级保护是指对国家重要信息、法人和其他组织及公民的专有信息以及信息和存储、传输、处理这些信息的信息系统分等级实行安全保护&#xff0c;对信息系统中使用的信息安全产品实行按等级管理&#xff0c;对信息系统中发生的信息安…

微火问答:全域外卖和本地生活服务是同个项目吗?

当前&#xff0c;本地生活赛道火爆程度不断升级&#xff0c;作为其主要板块之一的团购外卖也持续迸发出新的活力。而全域运营的出现无疑是给团购外卖这把正在熊熊燃烧的烈火&#xff0c;又添了一把新柴&#xff01; 所谓全域运营&#xff0c;简单来说&#xff0c;就是指所有领…

SAP-技巧篇实现GUI免密码登录

做为上千万的软件怎么会没有免密码登录呢 01 — 背景需求 如何实现SAP GUI免密码登录&#xff0c;不输入密码实现系统自动登录。 免责声明&#xff1a;谨慎设置&#xff0c;因免密登录导致数据泄密&#xff0c;作者概不负责。 02 — 实现 客户端要求&#xff1a;SAP G…

VMware创建虚拟机

1.自定义 2.选择硬件兼容性 3.创建一个空白硬盘 4.选择操作系统和版本 5.设置虚拟机名称以及安装位置 6.处理器配置 7.设置虚拟机内存 8.设置网络类型 8.选择IO控制器 9.选择磁盘类型 10.创建一个新硬盘 11.设置磁盘容量以及磁盘个数 12.设置磁盘文件名称(默认) 13.点击完成创建…

从0开始学统计-P值

1.P值是什么&#xff1f; P值&#xff08;P-value&#xff09;是假设检验中的一个重要指标&#xff0c;用于衡量样本数据对于零假设的支持程度。具体来说&#xff0c;P值表示在假设零假设为真的情况下&#xff0c;观察到的样本数据或更极端情况出现的概率。 通常情况下&#…

蓝桥杯-班级活动

题目描述 小明的老师准备组织一次班级活动。班上一共有 ( n ) 名&#xff08;( n ) 为偶数&#xff09;同学&#xff0c;老师想把所有的同学进行分组&#xff0c;每两名同学一组。为了公平&#xff0c;老师给每名同学随机分配了一个 ( n ) 以内的正整数作为 id&#xff0c;第 …

KVM热迁移虚拟机+KSM内存页合并

KVM高级功能部署 文章目录 KVM高级功能部署资源列表基础环境一、静态迁移1.1.在源宿主机上准备虚拟机1.1.1、调试VNC1.1.2、创建虚拟机test011.1.3、console登录test01虚拟机1.1.4、标记虚拟机test01当前IP地址 2.1、提取磁盘和配置文件2.2.1、查看虚拟机test01当前状态2.2.2、…

vue+iview tabs context-menu 弹出框怎么修改样式

今天遇到一个需求说页面顶部的菜单右键弹出框离得有点远 代码是这样 <Tabs type"card" closable class"main-tags-col-tabs" v-model"activeTab" on-click"handleClickTag" :before-remove"handleBeforeRemove" capt…

没有telnet情况下判断主机端口是否开放的方法

没有telnet情况下判断主机端口是否开放的方法 方式一 ssh -v 101.132.64.231 -p 80显示结果 如果有显示 debug1: Connection established. 就说明端口是开放的 端口未开放的情况是显示 方式二 echo >/dev/tcp/101.132.64.231/3306效果如下 如果没有任何输出&#xff0c;…

深入了解Nodejs模块机制

深入了解Nodejs模块机制 我们都知道Nodejs遵循的是CommonJS规范&#xff0c;当我们require(moduleA)时&#xff0c;模块是怎么通过名字或者路径获取到模块的呢&#xff1f;首先要聊一下模块引用、模块定义、模块标识三个概念。 1 CommonJS规范 1.1 模块引用 模块上下文提供…

009-Linux的管道和重定向

文章目录 前言 一、重定向 1.1、FD简介 1.2、FD举例 1.3、重定向简介 1.3.1、输出重定向 正确输出&#xff1a; 错误输出 案例1&#xff1a;正确输出重定向 案例2&#xff1a;错误输出重定向 ​编辑 案例3&#xff1a;正确和错误都输出重定向到相同位置 1.3.2、输…

Redis - 缓存场景

学习资料 学习的黑马程序员哔站项目黑马点评&#xff0c;用作记录和探究原理。 Redis缓存 缓存 &#xff1a;就是数据交换的缓冲区&#xff0c;是存储数据的临时地方&#xff0c;读写性能较高 缓存常见的场景: 数据库查询加速&#xff1a;通过将频繁查询的数据缓存起来&…

C从零开始实现贪吃蛇大作战

个人主页&#xff1a;星纭-CSDN博客 系列文章专栏 : C语言 踏上取经路&#xff0c;比抵达灵山更重要&#xff01;一起努力一起进步&#xff01; 有关Win32API的知识点在上一篇文章&#xff1a; 目录 一.地图 1.控制台基本介绍 2.宽字符 1.本地化 2.类项 3.setlocale函…

推荐10款优秀的组件库(一)

1.Ant Desgin UI 网址&#xff1a; https://ant-design-mobile.antgroup.com/zh Ant Design - 一套企业级 UI 设计语言和 React 组件库 "Ant Design Mobile"是一个在线的移动端Web体验平台&#xff0c;让你探索移动端Web的体验极限。 添加图片注释&#xff0c;不…

5月26(信息差)

&#x1f30d; 珠峰登顶“堵车”后冰架断裂 5人坠崖 2人没爬上来&#xff01; 珠峰登顶“堵车”后冰架断裂 5人坠崖 2人没爬上来&#xff01; &#x1f384; Windows 11 Beta 22635.3646 预览版发布&#xff1a;中国大陆地区新增“微软电脑管家”应用 ✨ 成都限购解除即将满…

5.23.12 计算机视觉的 Inception 架构

1. 介绍 分类性能的提升往往会转化为各种应用领域中显着的质量提升&#xff0c;深度卷积架构的架构改进可用于提高大多数其他计算机视觉任务的性能&#xff0c;这些任务越来越依赖于高质量的学习视觉特征。在 AlexNet 功能无法与手工设计、制作的解决方案竞争的情况下&#xf…

能找伴侣的相亲婚恋平台有哪些?6款值得信赖的恋爱交友软件体验测评

在这个超快节奏的社会里&#xff0c;好多人都忙着搞事业和搞钱&#xff0c;却把终身大事给忽略了。但是随着年龄越来越大&#xff0c;来自长辈和社会的压力也越来越大&#xff0c;因此网络上的相亲交友软件&#xff0c;就成了大多数单身贵族的脱单首选了。下面就来给大家讲讲我…

Day06:Flex 布局

目标&#xff1a;熟练使用 Flex 完成结构化布局 一、标准流 标准流也叫文档流&#xff0c;指的是标签在页面中默认的排布规则&#xff0c;例如&#xff1a;块元素独占一行&#xff0c;行内元素可以一行显示多个。 二、浮动 1、基本使用 作用&#xff1a;让块元素水平排列。 …

【C++题解】1698. 请输出带有特殊尾数的数

问题&#xff1a;1698. 请输出带有特殊尾数的数 类型&#xff1a; 题目描述&#xff1a; 请输出1∼n 中所有个位为 1、3、5、7中任意一个数的整数&#xff0c;每行 1 个。( n<1000 ) 比如&#xff0c;假设从键盘读入 20&#xff0c;输出结果如下&#xff1a; 1 3 5 7 11 1…