cuốn sách gpt4 ai đã làm

Tạo biểu đồ/đồ thị từ mảng giá trị

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 23:01:27 28 4
mua khóa gpt4 Nike

Tôi đang cố vẽ sơ đồ phân bố ánh sáng. Tôi muốn làm chính xác những gì bước đầu tiên của câu hỏi này yêu cầu:Phân tích thống kê trên đường cong hình chuông (Gaussian) .

Bây giờ tôi có một tập hợp các giá trị. Tôi muốn số chỉ mục của phần tử mảng nằm trên trục x của biểu đồ và giá trị thực được lưu trữ tại chỉ mục nằm trên trục y. Tôi đang cố gắng sử dụng OpenCV để thực hiện việc này, nhưng hàm biểu đồ của OpenCV dường như chỉ vẽ tần số của các giá trị và không có gì khác.

câu trả lời hay nhất

Tôi thấy cvplot hữu ích, mặc dù rất hạn chế:http://code.google.com/p/cvplot/

Ngoài ra, việc nhúng python và nhập các lệnh của nó vào matplotlib từ C++ khá dễ dàng. Tôi đã sử dụng nó để tạo ra đồ họa đẹp mắt mà bạn không bao giờ có được từ cvplot. Đây là một lớp nhanh và bẩn, theo sau là một ví dụ, nhưng không có tài liệu (tất nhiên có rất nhiều tài liệu matplotlib):

// Giao diện với Matplotlib của Python
#include
using namespace std;

lớp PyPlot
{
private:
// Hàm tạo Singleton
PyPlot() : bị khóa (sai)
{
Py_SetProgramName("argv[0]"); /* tùy chọn nhưng được khuyến nghị */
Py_Initialize();

PyRun_SimpleString(
"nhập numpy dưới dạng np\n"
"nhập matplotlib.pyplot dưới dạng plt\n"
"nhập matplotlib.text dưới dạng văn bản\n"
"nhập matplotlib dưới dạng mpl\n"
);
}

~PyPlot()
{
Py_Finalize();
}


// ngăn chặn các bản sao của singleton
PyPlot(PyPlot const&); // Không triển khai
void operator=(PyPlot const&); // Không thực hiện


chuỗi to_string(dval kép)
{
return std::to_string(dài gấp đôi(dval));
}

chuỗi to_string(int ival)
{
return std::to_string(long long(ival));
}


public:
// lấy cá thể đơn lẻ
PyPlot tĩnh & getInstance()
{
phiên bản PyPlot tĩnh; // Đảm bảo sẽ bị hủy.
// Khởi tạo ngay lần sử dụng đầu tiên.
return instance;
}

// ngăn việc quay lại show() của Matplotlib
bool bị khóa;


nội tuyến void print_time()
{
PyRun_SimpleString("từ thời điểm nhập thời gian,ctime\n"
"print 'Hôm nay là',ctime(time())\n");
}

inline void exec(lệnh chuỗi)
{
PyRun_SimpleString(command.c_str());
}

hiển thị khoảng trống nội tuyến ()
{
bị khóa = đúng;
exec("plt.show()\n");
bị khóa = sai;
}

tiêu đề void nội tuyến(chuỗi s, chuỗi args = "")
{
lệnh chuỗi = "plt.title(r'" + s + "'";
if(args.length() != 0)
lệnh += "," + args;
lệnh += ")\n";
thực thi (lệnh);
}

inline void xlabel(string s, string args = "")
{
lệnh chuỗi = "plt.xlabel(r'" + s + "'";
if(args.length() != 0)
lệnh += "," + args;
lệnh += ")\n";
thực thi (lệnh);
}

inline void ylabel(chuỗi s, chuỗi args = "")
{
lệnh chuỗi = "plt.ylabel(r'" + s + "'";
if(args.length() != 0)
lệnh += "," + args;
lệnh += ")\n";
thực thi (lệnh);
}

chú thích void nội tuyến (chuỗi args = "")
{
lệnh chuỗi = "plt.legend(";
if(args.length() != 0)
lệnh += đối số;
lệnh += ")\n";
thực thi (lệnh);
}

mẫu
inline void defin_vector(tên chuỗi, giá trị vector)
{
lệnh chuỗi = tên + " = [";

vector::iterator nó;
for(it = value.begin(); it != value.end(); it++)
{
lệnh += to_string(*it);

if(it + 1 != value.end())
lệnh += ", ";
}
lệnh += "]\n";
thực thi (lệnh);
}

mẫu
sơ đồ void nội tuyến(vector x, vector y, string args = "")
{
định nghĩa_vector("x", x);
định nghĩa_vector("y", y);

lệnh chuỗi = "plt.plot(x, y";
if(args.length() != 0)
lệnh += "," + args;
lệnh += ")\n";
thực thi (lệnh);
}

mẫu
biểu đồ void nội tuyến(vector y, string args = "")
{
định nghĩa_vector("y", y);
vectơ x;
for(unsigned int i = 0; i < y.size(); i ++)
x.push_back(i);

định nghĩa_vector("x", x);

lệnh chuỗi = "plt.plot(x, y";
if(args.length() != 0)
lệnh += "," + args;
lệnh += ")\n";
thực thi (lệnh);
}

ví dụ về khoảng trống nội tuyến()
{
double xa[] = {0,5, 0,7, 0,9, 1,3, 1,7, 1,8};
vectơ x;
x.sign(xa, xa + 6);

nhân đôi ya[] = {0,1, 0,2, 0,75, 1,5, 2,1, 2,4};
vector y;
y.sign(ya, ya + 6);

lô(x, y);
cốt truyện(x, y, "'go', markersize=20");

thực thi(
"plt.xticks( np.arange(0,3) )\n"
"plt.yticks( np.arange(0,2.5,0.2) )\n"
);
xlabel("trục x");
ylabel("trục y");
title("Ví dụ về cốt truyện của tôi");
trình diễn();
}
};

#endif

Sau đó sử dụng nó như thế này:

PyPlot &plt = PyPlot::getInstance();

giá trị std::vector;

plt.exec("mpl.rcParams['font.family']='Times New Roman'\n"
"mpl.rcParams['lines.linewidth'] = 2\n"
"mpl.rcParams['axes.linewidth'] = 3\n"
"mpl.rc('xtick', labelsize=12)\n"
"mpl.rc('ytick', labelsize=12)\n"
"ax = plt.gca()\n"
"ax.set_ylim(0, 100)\n"
);

plt.plot(values, "'go-', label='values'");
plt.ylabel("Giá trị", "fontsize=14");
plt.xlabel("Chỉ mục", "fontsize=14");
plt.show();

Cái này có các lệnh matplotlib cần thiết để tạo biểu đồ: http://matplotlib.org/examples/api/histogram_demo.html

Tất nhiên bạn cần cài đặt Python. Mọi thứ đều hoạt động tốt trong Python 2.7.3/Win 7/VS2010/OpenCV 2.4.4

Về c++ - tạo biểu đồ/biểu đồ từ một mảng giá trị, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/17048176/

28 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress