日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Visual Studio C++ 画图【极简版】

發(fā)布時(shí)間:2025/4/16 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Visual Studio C++ 画图【极简版】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)述

配置的話根據(jù)下面的我寫的這篇來配置清楚。很容易的,遇到寫的不清楚直接戳我。

配置

  • VS C++調(diào)用python進(jìn)行畫圖matplotlib

文章目錄

    • 簡(jiǎn)述
      • 配置
    • 畫圖
    • 使用實(shí)例
      • 實(shí)例一
      • 實(shí)例二
      • 實(shí)例三
      • 實(shí)例四(畫圓)

這里我們要求必須要安裝了python還有安裝了一些必須要的庫(這些比上面的還簡(jiǎn)單很多,所以就簡(jiǎn)單附上文字說明了)。

  • 在網(wǎng)上下載好python就好了。直接在官網(wǎng)上下載好
  • 在命令行下安裝好matplotlib 直接pip install matplotlib 就好了。
  • 如果嫌慢的話,就用 pip安裝庫速度較慢–常用的幾個(gè)國內(nèi)鏡像 的解決方式

畫圖

這里的話,為了方便使用,我做了一個(gè)模板的封裝,這樣以后使用的時(shí)候,直接調(diào)用類似的函數(shù)就好了。
大家使用的時(shí)候,直接復(fù)制粘貼就好了

#include<Python.h> #include<string> using namespace std; #include <iostream>template<class T> string arr_to_string_list(T*arr, int N) {string s = "[";for (int i = 0; i < N; ++i) {s += to_string(arr[i]);if (i != N - 1) s += ",";}s += "]";return s; }template<class T, class V=int> void plot(T*x, int N1, V*y=NULL, bool equal=false) {PyRun_SimpleString("import matplotlib.pyplot as plt");if (equal) {PyRun_SimpleString("plt.axis(\"equal\")");}string cmd = "plt.plot(";string s1 = arr_to_string_list(x, N1);if (y != NULL) {string s2 = arr_to_string_list(y, N1);cmd += (s1 + "," + s2 + ")");PyRun_SimpleString(cmd.c_str());}else {cmd += (s1 + ")");PyRun_SimpleString(cmd.c_str());}PyRun_SimpleString("plt.show()"); }void pythonInitial() {Py_Initialize(); /*初始化python解釋器,告訴編譯器要用的python編譯器*/string path = ".";string chdir_cmd = string("sys.path.append(\"") + path + "\")";const char* cstr_cmd = chdir_cmd.c_str();PyRun_SimpleString("import sys");PyRun_SimpleString(cstr_cmd); }

主函數(shù)部分:

void main() {double a[] = { 1.2, 2.0, 3, 4, 5, 6, 3, 2, 3, 2, 31, 2, 1, 4 };pythonInitial();plot(a, 14); // 14是數(shù)組長(zhǎng)度Py_Finalize(); /*結(jié)束python解釋器,釋放資源*/system("pause"); }

調(diào)用的方法很簡(jiǎn)單就是直接使用下面的范式(注意先調(diào)用python的初始化和python的釋放)

plot(數(shù)組,長(zhǎng)度);

使用實(shí)例

其實(shí)就是修改下main函數(shù)部分,來看下結(jié)果。

實(shí)例一

void main() {const int N = 14;int b[N] = {};for (int i = 0; i < N; ++i) { b[i] = 2 * i - 1; }double a[] = { 1.2, 2.0, 3, 4, 5, 6, 3, 2, 3, 2, 31, 2, 1, 4 };pythonInitial();plot(b, N, a);Py_Finalize(); /*結(jié)束python解釋器,釋放資源*/system("pause"); }

實(shí)例二

  • 這個(gè)需要添加一個(gè)頭文件
#include <cmath> void main() {const int N = 14;int b[N] = {};for (int i = 0; i < N; ++i) { b[i] = 2 * i - 1; }double a[N] = {};for (int i = 0; i < N; ++i) { a[i] = sin(b[i]); }pythonInitial();plot(b, N, a);Py_Finalize(); /*結(jié)束python解釋器,釋放資源*/system("pause"); }

實(shí)例三

就是把上面的函數(shù)畫得稍微好看點(diǎn)。
(c++畫sin函數(shù))

  • 這里的話,用到了pi所以,換一下頭文件,把剛剛的
#include <cmath>

替換成(順序不能顛倒)(不然就是定義一下PI

#define _USE_MATH_DEFINES #include <math.h> void main() {const int N = 1000;double b[N] = {};for (int i = 0; i < N; ++i) { b[i] = 2*M_PI * i / N; }double a[N] = {};for (int i = 0; i < N; ++i) { a[i] = sin(b[i]); }pythonInitial();plot(b, N, a);Py_Finalize(); /*結(jié)束python解釋器,釋放資源*/system("pause"); }

實(shí)例四(畫圓)

void main() {const int N = 1000;double r = 1.0;double point_x = 0.0, point_y = 0.0;double b[N] = {};for (int i = 0; i < N; ++i) { b[i] = 2*M_PI * i / N; }double x[N] = {};for (int i = 0; i < N; ++i) { x[i] = point_x + r * cos(b[i]); }double y[N] = {};for (int i = 0; i < N; ++i) { y[i] = point_y + r * sin(b[i]); }pythonInitial();plot(x, N, y, true);Py_Finalize(); /*結(jié)束python解釋器,釋放資源*/system("pause"); }

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Visual Studio C++ 画图【极简版】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。