# charts **Repository Path**: ngwaiming/charts ## Basic Information - **Project Name**: charts - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-06-13 - **Last Updated**: 2025-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Charts ## 介绍 本项目是一个基于Django的API,用于生成多种类型的图表。它可以接收JSON数据,并根据指定的X轴和Y轴生成柱状图、折线图和饼图。生成的图表将保存到指定的目录中,并返回生成的图表文件的URL。 ## 功能 1. 接收JSON数据作为输入。 2. 支持生成柱状图、折线图和饼图。 3. 支持指定X轴和Y轴。 4. 将生成的图表保存到指定的目录中。 5. 返回生成的图表文件的URL。 ## 依赖 - Python 3.6+ - Django 3.0+ - matplotlib - pandas - numpy - python-ulid - minio - urllib3 ## 配置 1. 克隆项目到本地。 2. 安装依赖。 3. 修改`settings.py`文件中的`MINIO_MEDIA_BUCKET`和`MINIO_STATIC_BUCKET`为实际路径。 4. 修改`settings.py`文件中的`MINIO_ACCESS_KEY`和`MINIO_SECRET_KEY`为实际值。 5. 运行项目。 ## 安装依赖 ```shell pip install matplotlib pandas numpy django python-ulid minio urllib3 ``` ## 程序运行命令 在程序根目录下执行 ```shell python manage.py runserver ``` ## Docker 部署 1. 构建镜像 ```shell docker build --no-cache -t charts-app . ``` 2. 运行容器 ```shell docker run -d -p 8000:8000 --name charts-container charts-appcharts ``` ## 请求方式 1. 柱状图请求地址 ```curl curl -X POST 'http://localhost:8000/api/multi-bar/' -H 'Content-Type: application/json' -d '{ "data":{"msg":"ok","code":"0","payload":{"pageSize":10,"totalSize":3,"page":1,"data":[{"采购分类名称":"标准件","采购分类采购金额":"33167697.49","采购分类金额占比":"123456778"},{"采购分类名称":"外协加工","采购分类采购金额":"31883072.28","采购分类金额占比":"7654321"},{"采购分类名称":"原材料","采购分类采购金额":"30900906.22","采购分类金额占比":"19112345"}],"totalPage":1},"requestId":5806808860185753026}, "xAxis":"采购分类名称", "yAxis":"采购分类采购金额,采购分类金额占比", "title": "采购分类分析" }' ``` 2. 折线图请求地址 ```curl curl -X POST 'http://localhost:8000/api/multi-bar/' -H 'Content-Type: application/json' -d '{ "data":{"msg":"ok","code":"0","payload":{"pageSize":10,"totalSize":3,"page":1,"data":[{"采购分类名称":"标准件","采购分类采购金额":"33167697.49","采购分类金额占比":"123456778"},{"采购分类名称":"外协加工","采购分类采购金额":"31883072.28","采购分类金额占比":"7654321"},{"采购分类名称":"原材料","采购分类采购金额":"30900906.22","采购分类金额占比":"19112345"}],"totalPage":1},"requestId":5806808860185753026}, "xAxis":"采购分类名称", "yAxis":"采购分类采购金额,采购分类金额占比", "title": "采购分类分析" }' ``` > Y轴如果存在多个,用逗号分隔 3. 饼图请求地址 ```curl curl -X POST 'http://localhost:8000/api/pie/' -H 'Content-Type: application/json' -d '{ "data":{"msg":"ok","code":"0","payload":{"pageSize":10,"totalSize":3,"page":1,"data":[{"采购分类名称":"标准件","采购分类采购金额":"33167697.49","采购分类金额占比":"123456778"},{"采购分类名称":"外协加工","采购分类采购金额":"31883072.28","采购分类金额占比":"7654321"},{"采购分类名称":"原材料","采购分类采购金额":"30900906.22","采购分类金额占比":"19112345"}],"totalPage":1},"requestId":5806808860185753026}, "xAxis":"采购分类名称", "yAxis":"采购分类采购金额", "title": "采购分类分析" }' ``` > 接收的数据类型包含: > 1. `{"payload": {"pageSize":10,"totalSize":3,"page":1,"data":[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"}]}}` > 2. `{"data":[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"}]}` > 3. `{"result":[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"}]}` > 4. `{"items":[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"}]}` ## 响应示例 ```json { "status": "success", "message": "Multi bar chart generated successfully", "file_path": "https://domain/converted-documents/charts/01JXKSH5M0VTETD6CA82H8BME5_multi_bar_chart.png" } ```