请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

在excel中建立柱状图时的数据显示问题

我将爬虫爬取的数据存入excel表中,并想在表中用柱状图展示出来,但是纵座标的数据始终出不来

from bs4 import BeautifulSoup
import requests
from openpyxl import Workbook, load_workbook
from openpyxl.chart import BarChart, Series, Reference


def chart_show(url):
    html_doc = requests.get(url).text

    soup = BeautifulSoup(html_doc, features="lxml")
    links = soup.select("tbody")[0].select('tr')
    ranktop = []        # 存放排名
    name = []           # 存放名称
    hot_num = []        # 存放热度

    links = links[1:]
    for tr in links:

        mz = tr.select('a')[0].contents[0].string
        name.append(mz)

        pm = int(tr.select('td')[0].string)
        ranktop.append(pm)

        rd = tr.select('span')[0].string
        hot_num.append(rd)

    wb = Workbook(write_only=True)
    ws = wb.create_sheet()

    ws.append(['排名', '名称', '热度'])
    for i in range(50):
        l = [ranktop[i], name[i].encode('utf-8'), hot_num[i].encode('utf-8')]
        ws.append(l)

    chart1 = BarChart()
    chart1.type = "col"
    chart1.style = 10
    chart1.title = "热搜数据可视化"
    chart1.y_axis.title = 'hot_num'
    chart1.x_axis.title = 'topic'

    data = Reference(ws, min_col=3, min_row=1, max_row=51, max_col=3)
    cats = Reference(ws, min_col=2, min_row=2, max_row=51)
    chart1.add_data(data, titles_from_data=True)
    chart1.set_categories(cats)
    chart1.shape = 4
    ws.add_chart(chart1, "A53")

    wb.save('./static/data_show.xlsx')


def main():
    url = "https://s.weibo.com/top/summary?cate=realtimehot"
    chart_show(url)


if __name__ == '__main__':
    main()

是不是数据太大了呢? 这个柱状图的官方文档好像也不是太详细图片描述

正在回答 回答被采纳积分+3

1回答

NavCat 2019-04-19 00:32:44

你这个不是数据大的问题,而是数据格式的问题,也是很容忽视的问题。

    ws.append(['排名', '名称', '热度'])
    for i in range(50):
        l = [ranktop[i], name[i].encode('utf-8'), int(hot_num[i])] # 注意热度是整数
        ws.append(l)

excel中柱状图的数据要是数值类型(int/float)才可以啦,但是你的代码中保存的是字符串,所以出不来

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信