使用GPT生成python图表

文章介绍了如何使用Python的xlrd库读取Excel文件,分析xx大学在不同奖项类别中的获奖数据,然后使用matplotlib和pyecharts进行直方图可视化,展示了各奖项的分布情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,生成一脚本,读取到所需的excel表格

import xlrd

data = xlrd.open_workbook('xxxx.xls')  # 打开xls文件
table = data.sheet_by_index(0)  # 通过索引获取表格

# 初始化奖项字典
awards_dict = {
    "一等奖": 0,
    "二等奖": 0,
    "三等奖": 0
}

# 初始化科目字典
subjects_dict = {}

# 遍历表格的每一行,跳过表头
for i in range(1, table.nrows):
    row = table.row_values(i)
    # 是xx大学才进行处理
    if row[2] == 'xx大学':
        # 转为小写,避免首字母不一样带来的误判
        subject = row[4].lower()
        # 获得的奖项
        award = row[5]
        # 加入字典
        if subject not in subjects_dict:
            subjects_dict[subject] = awards_dict.copy()
        subjects_dict[subject][award] += 1

# 将结果写入文件
with open("result.txt", "w") as f:
    for subject, awards in subjects_dict.items():
        f.write(f"{subject}\n")
        for award, count in awards.items():
            f.write(f"{award}: {count}\n")
        f.write("\n")

matplotlib

我们要GPT根据上面的代码,用直方图展示xx大学在各个类别中的获奖情况,也就是去对这个文本文件进行数据可视化,于是chatGPT就生成了以下的代码

import xlrd
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']    # 设置中文字体,不然显示不了中文
data = xlrd.open_workbook('xxxx.xls')  # 打开xls文件
table = data.sheet_by_index(0)  # 通过索引获取表格

# 初始化奖项字典
awards_dict = {
    "一等奖": 0,
    "二等奖": 0,
    "三等奖": 0
}

# 初始化科目字典
subjects_dict = {}

# 遍历表格的每一行,跳过表头
for i in range(1, table.nrows):
    row = table.row_values(i)
    if row[2] == 'xx大学':
        # 转为小写,避免首字母不一样带来的误判
        subject = row[4].lower()
        award = row[5]
        if subject not in subjects_dict:
            subjects_dict[subject] = awards_dict.copy()
        subjects_dict[subject][award] += 1

# 直方图展示xx大学在各个类别中的获奖情况
x_labels = subjects_dict.keys()
x = np.arange(len(x_labels))  # 使用numpy的arange生成连续的横坐标值

# 提取各个奖项的数量
y_first = [subjects_dict[subject]['一等奖'] for subject in x_labels]
y_second = [subjects_dict[subject]['二等奖'] for subject in x_labels]
y_third = [subjects_dict[subject]['三等奖'] for subject in x_labels]

# 设置颜色
color_first = 'skyblue'
color_second = 'lightgreen'
color_third = 'lightcoral'

# 绘制直方图
plt.bar(x, y_third, width=0.2, align='center', label='三等奖', color=color_third)
plt.bar(x + 0.2, y_second, width=0.2, align='center', label='二等奖', color=color_second)
plt.bar(x - 0.2, y_first, width=0.2, align='center', label='一等奖', color=color_first)

plt.xlabel('类别')
plt.ylabel('获奖数量')
plt.title('xx大学在各个类别中的获奖情况')
plt.xticks(x, x_labels)
plt.legend()

# 调整图例位置和边框样式
plt.legend(loc='upper right', frameon=False)

# 设置图形背景色
plt.gca().set_facecolor('whitesmoke')

# 调整图形布局
plt.tight_layout()

plt.show()

pyecharts

pyecharts 是一个用于生成 Echarts 图表的类库。 Echarts 是百度开源的一个数据可视化 JS 库。

import xlrd
from pyecharts.charts import Bar
from pyecharts import options as opts

data = xlrd.open_workbook('xxxx.xls')  # 打开xls文件
table = data.sheet_by_index(0)  # 通过索引获取表格

# 初始化奖项字典
awards_dict = {
    "一等奖": 0,
    "二等奖": 0,
    "三等奖": 0
}

# 初始化科目字典
subjects_dict = {}

# 遍历表格的每一行,跳过表头
for i in range(1, table.nrows):
    row = table.row_values(i)
    if row[2] == 'xx大学':
        # 转为小写,避免首字母不一样带来的误判
        subject = row[4].lower()
        award = row[5]
        if subject not in subjects_dict:
            subjects_dict[subject] = awards_dict.copy()
        subjects_dict[subject][award] += 1

# 直方图展示xx大学在各个类别中的获奖情况
x_labels = subjects_dict.keys()

# 提取各个奖项的数量
y_first = [subjects_dict[subject]['一等奖'] for subject in x_labels]
y_second = [subjects_dict[subject]['二等奖'] for subject in x_labels]
y_third = [subjects_dict[subject]['三等奖'] for subject in x_labels]

# 使用 Pyecharts 绘制直方图
bar = (
    Bar()
    .add_xaxis(list(x_labels))
    .add_yaxis('一等奖', y_first)
    .add_yaxis('二等奖', y_second)
    .add_yaxis('三等奖', y_third)
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
        yaxis_opts=opts.AxisOpts(name='获奖数量'),
        title_opts=opts.TitleOpts(title='xx大学在各个类别中的获奖情况'),
        legend_opts=opts.LegendOpts(pos_right='5%', pos_top='20%')
    )
)

# 生成图表并保存为 HTML 文件
bar.render('bar_chart.html')

<think>好的,用户想了解如何使用GPT生成像的方法和工具。首先,我需要回忆一下GPT模型的能力,因为通常GPT主要是处理文本生成的,但结合其他工具或模型,可能可以生成像。用户提到的引用[1]中提到了GPT在函数生成中的应用,但生成像可能需要不同的方法。 接下来,用户提到的引用[2]涉及draw.io,这是一个图表绘制工具,但和生成可能关系不大。不过这里可能需要确认用户是否混淆了文本生成生成,或者是否有其他工具结合使用的情况。 首先,我需要明确GPT本身是否能直接生成像。据我所知,像DALL-E、MidJourney或Stable Diffusion这样的模型是专门用于生成的,而GPT系列模型如GPT-3或GPT-4主要处理文本。不过可能有方法将GPT与其他工具结合,例如使用GPT生成像的描述,再通过其他模型生成像。 然后,我需要考虑用户可能需要的具体方法和工具。例如,使用GPT生成文本提示,然后用DALL-E生成像,或者是否有集成的工具。需要检查是否有支持这种流程的工具,比如OpenAI的API是否允许结合使用。 另外,用户的问题可能涉及如何使用GPT来辅助生成过程,比如自动生成像的描述或标签,或者通过自然语言指令生成像。需要分步骤说明,比如首先生成描述,再使用生成模型。 还要注意用户可能的误区,比如认为GPT可以直接生成像,需要澄清这一点,并指需要结合其他工具。同时,提供具体的工具名称和使用方法,比如DALL-E、MidJourney、Stable Diffusion等,以及如何通过文本提示生成像。 最后,要确保回答结构清晰,分步骤说明方法和工具,并可能提供示例或流程说明,帮助用户理解和应用。</think>要使用GPT生成像,需结合文本到生成工具或模型。以下是具体方法和工具: ### 一、核心方法 1. **文本描述生成** GPT本身无法直接生成像,但可生成**高质量文本提示**。例如输入“生成一张未来城市的科幻”,GPT会输详细场景描述: > “漂浮的透明建筑群,空中交通轨道交错,霓虹灯光映照在反光材质路面上,身着机械外骨骼的人类行走其中” 2. **提示词优化** GPT能优化原始提示,添加艺术风格参数: ```python # 示例提示优化 original_prompt = "一只猫" enhanced_prompt = gpt.generate("将‘一只猫’扩展为详细艺术描述,包含赛博朋克风格、8K质、虚幻引擎渲染等元素") ``` ### 二、主流工具组合 | 工具名称 | 类型 | 集成方式 | 特点 | |------------------|---------------|--------------------------|-----------------------------| | DALL-E 3 | 生成模型 | 通过ChatGPT Plus直接调用 | 理解复杂语义,支持多次修改 | | Midjourney | 生成平台 | 通过Discord输入GPT生成的提示词 | 艺术风格多样,需调整参数 | | Stable Diffusion | 开源模型 | 本地部署+GPT提示词生成器 | 支持自定义模型,需显卡配置 | ### 三、操作流程(以DALL-E 3为例) 1. 通过OpenAI API发送请求: ```python from openai import OpenAI client = OpenAI() response = client.images.generate( model="dall-e-3", prompt="未来城市夜景,赛博朋克风格,4K分辨率", size="1024x1024", quality="standard", n=1, ) image_url = response.data[0].url ``` ### 四、关键技术点 1. **提示工程** 需包含:主体描述+艺术风格+技术参数+构指导。GPT可自动补全这些要素,例如输入“一只猫”时,GPT会自动补充“超现实主义风格,柔光效果,中心构” 2. **迭代优化** 首次生成不满意时,可让GPT分析问题并改进提示词: > “当前像颜色对比度不足,建议添加‘高对比色调’‘明暗强烈过渡’等描述词”[^1]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值