首页 > 编程语言 >Python数据可视化

Python数据可视化

时间:2024-07-01 19:09:53浏览次数:16  
标签:ws xl Python data sparkline 可视化 path import 数据

 基于asciichartpy

import asciichartpy

data = [1, 2, 3, 4, 5, 4, 3, 2, 1]
chart = asciichartpy.plot(data)
print(chart)

 

基于sparklines

import sparklines

data = [1, 2, 3, 4, 5, 4, 3, 2, 1]
sparkline_str = ''.join(sparklines.sparklines(data))
print(sparkline_str)

 

基于sparkline-nb将曲线插入dataframe

import io
import base64
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from IPython.display import display, HTML


def sparkline(data, figsize=(4, 0.25), **kwargs):
    """
    Returns an HTML image tag containing a base64 encoded sparkline style plot
    """
    data = list(data)
    
    fig, ax = plt.subplots(1, 1, figsize=figsize, **kwargs)
    ax.plot(data)
    for k, v in ax.spines.items():
        v.set_visible(False)
    ax.set_xticks([])
    ax.set_yticks([])

    plt.plot(len(data) - 1, data[len(data) - 1], 'r.')

    ax.fill_between(range(len(data)), data, [min(data)]*len(data), alpha=0.1)
    
    img = io.BytesIO()
    plt.savefig(img, format='png')
    img.seek(0)
    plt.close()
    
    # Encode the image in base64
    img_base64 = base64.b64encode(img.read()).decode('utf-8')
    
    return f'<img src="data:image/png;base64,{img_base64}"/>'


if __name__ == "__main__":

    n = 4
    data = [
        ('rand',        np.random.rand(n)), 
        ('randn',       np.random.randn(n)), 
        ('beta',        np.random.beta(2, 1, size=n)),
        ('binomial',    np.random.binomial(3.4, 0.22, size=n)),
        ('exponential', np.random.exponential(size=n)),
        ('geometric',   np.random.geometric(0.5, size=n)),
        ('laplace',     np.random.laplace(size=n))
    ]
    spark = pd.DataFrame(data, columns=['func', 'data'])
    print(spark)

    # map the sparkline function over the data column
    # and store back in the column sparklines
    spark['sparklines'] = spark.data.map(sparkline)
    # _repr_html_ escapes HTML so manually handle the rendering
    HTML(spark.to_html(escape=False))

 

基于xlsxwriter在Excel里插入曲线

import xlsxwriter

wb = xlsxwriter.Workbook('hello.xlsx')
ws = wb.add_worksheet()

data=[12,23,9,17,31,3,7,21,10,15]
ws.write_row('A1', data)
ws.set_column('K:K', 40)
ws.set_row(0, 30)

data=[1,1,-1,-1,-1,1,1,1,-1,-1]
ws.write_row('A5', data)
ws.set_column('K:K', 40)
ws.set_row(4, 30)
ws.add_sparkline('K1', {'range':'Sheet1!A1:J1', 'markers':True})
ws.add_sparkline('K5', {'range':'Sheet1!A5:J5', 'type':'win_loss',
'negative_points':True})

wb.close()

 

基于matplotlib.pyplot先生成png,然后再插入Excel的方法

import os
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
from matplotlib import font_manager
from openpyxl import load_workbook
from openpyxl.drawing.image import Image

def insert_pic(excel_path, pic_path, height):
    if not os.path.exists(excel_path):
        log.error("failed to insert pic because of missing {}".format(excel_path))
        return
    if not os.path.exists(pic_path):
        log.error("failed to insert pic because of missing {}".format(pic_path))
        return
    print(excel_path, pic_path)
    xl = load_workbook(excel_path)
    xl_sheet = xl[xl.sheetnames[0]]
    pos = "B" + str(xl_sheet.max_row + height + 5)
    img = Image(pic_path)
    xl_sheet.add_image(img, pos)
    xl.save(excel_path)
    xl.close()

 

...

 

标签:ws,xl,Python,data,sparkline,可视化,path,import,数据
From: https://www.cnblogs.com/standby/p/18278640

相关文章

  • 用Python pynput库捕捉每一次组合键的优雅舞步
    哈喽,大家好,我是木头左!一、初识pynput:键盘与鼠标的监控利器当谈论计算机交互时,键盘和鼠标无疑是最常用的设备。无论是编写代码、浏览网页还是玩游戏,都依赖于这些输入设备与机器沟通。但在一些特殊的场景中,可能需要知道用户具体按下了哪些键,甚至是以何种顺序、何种速度进行操作......
  • 电脑配件管理系统(数据库课设)
     1.课设要求描述 ●实现电脑配件的增删查改功能管理●实现管理员和用户的不同登录身份管理●实现管理员登录之后对电脑配件的管理●实现用户登录后进行查询和领用配件的功能2.制作思路及基础讲解此项目主要是用于完成大二下半学期的数据库课设,随手记录。技术面大二下之......
  • FlinkCDCSQL数据同步mysql->clickhouse
    FlinkCDC(ChangeDataCapture)SQL用于实现数据库的数据变更捕获,并通过SQL接口进行处理。以下是一个基本的示例,全量+增量数据mysql同步到clickhouse,展示如何使用FlinkCDCSQL进行数据同步。首先,确保你有Flink和FlinkCDC的环境配置好。1.mysql测试source表(准备......
  • R可视化:好看的气泡图
    加载R包library(tidyverse)library(camcorder)gg_record(dir="tidytuesday-temp",device="png",width=8,height=8,units="in",dpi=320)导入数据team_results<-readr::read_csv('https://raw.githubusercontent.com/......
  • 华为OD机试D卷 --智能成绩表--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗?输入描述第1行输入两个整数,学生人数n和科目数量m。0<n<1000<m<10第2行输入m个科目名称,彼......
  • 华为OD机试D卷 --最富裕的小家庭--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。输入描述第一行为一......
  • 华为OD机试D卷 --最多购买宝石数目--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例1用例2用例3用例4题目解析算法源码题目描述橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为gems[i]0≤i<nn=gems.length宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续;......
  • 华为OD机试D卷 --最大括号深度--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述现有一字符串仅由‘(‘,’)’,‘{‘,’}’,’[‘,’]’六种括号组成。若字符串满足以下条件之一,则为无效字符串:①任一类型的左右括号数量不相等;②存在未按正确顺序(先左后右)闭合的括号。输出......
  • 数据结构 —— Trie 树
    一个笔记需要一张头图:Trie树是一种维护(广义)字符串(我们认为广义字符串是一切可以被线性描述的类型,例如,我们认为整数(无论是哪种进制下)是一种广义字符串;有理数也是一种广义字符串(使用无限循环小数方式表述,可能需要一些特殊处理。))的数据结构,其特征为适于处理前缀类型或寻找类型(i.e.......
  • Python武器库 - 科研中常用的python图像操作 - 转换图像颜色通道模式BGR到RGB
    应用场景:待补充。。。(主要是因为opencv默认的图像颜色通道模式为BGR,与我们通常说到的RGB模式有区别,所以这个转换操作还是比较常用的)主要用到cv2.cvtColor()函数代码示例:importcv2img1=cv2.imread('example_img/img1.png')cv2.imshow('lingdushowimg1',img1)img2=......