PlantUML Tips之设置连接线风格

本文介绍了如何在PlantUML中自定义连接线的风格。通过设置不同的参数,可以将默认的曲线连接线调整为直线或者虚线,从而在绘制图表时提供更多的视觉效果选择。

原文地址:https://www.lujun9972.win/blog/2020/04/22/plantuml-tips之设置连接线风格/index.html

花图时,PlantUML默认使用曲线连接元素,不过我们可以通过 skinparamlinetype 参数对连接线的风格进行修改。

例如下面是默认的连接风格:

@startUML EBook Use Case Diagram
left to right direction
Actor Customer as customer
Actor EBook as ebook
Actor Publisher as publisher
rectangle "Book Catalogue" {
    together {
        Actor "Book Database" as bookLog
        (Retrieve Information) as getBook
        customer -- getBook
        getBook -- ebook
        getBook -- bookLog

        (Update Catalogue) as updateCatalogue
        ebook -- updateCatalogue
        updateCatalogue -- bookLog
    }

    together {
        (Place Order) as order
        customer -- order
        order -- ebook
        order--publisher

        (Cancel Order) as cancelOrder
        customer -- cancelOrder
        cancelOrder -- ebook
        cancelOrder--publisher
    }
}

(Ship To EBook) as shipEBook
shipEBook -- publisher
(Ship To Customer) as shipCustomer
customer -- shipCustomer
ebook -- shipEBook
shipCustomer -- ebook

(Return to EBook) as returnCustomer
(Returnto Publisher) as returnPublisher
customer -- returnCustomer
returnCustomer -- ebook
ebook -- returnPublisher
returnPublisher -- publisher

@endUML

plantuml_deployment_nolinetype.png

下面是设置了 skinparam linetype ortho 的样子

@startUML EBook Use Case Diagram
skinparam linetype ortho
left to right direction
Actor Customer as customer
Actor EBook as ebook
Actor Publisher as publisher
rectangle "Book Catalogue" {
    together {
        Actor "Book Database" as bookLog
        (Retrieve Information) as getBook
        customer -- getBook
        getBook -- ebook
        getBook -- bookLog

        (Update Catalogue) as updateCatalogue
        ebook -- updateCatalogue
        updateCatalogue -- bookLog
    }

    together {
        (Place Order) as order
        customer -- order
        order -- ebook
        order--publisher

        (Cancel Order) as cancelOrder
        customer -- cancelOrder
        cancelOrder -- ebook
        cancelOrder--publisher
    }
}

(Ship To EBook) as shipEBook
shipEBook -- publisher
(Ship To Customer) as shipCustomer
customer -- shipCustomer
ebook -- shipEBook
shipCustomer -- ebook

(Return to EBook) as returnCustomer
(Returnto Publisher) as returnPublisher
customer -- returnCustomer
returnCustomer -- ebook
ebook -- returnPublisher
returnPublisher -- publisher

@endUML

plantuml_deployment_linetype_ortho.png

下面是设置了 skinparam linetype polyline 的样子

@startUML EBook Use Case Diagram
skinparam linetype polyline
left to right direction
Actor Customer as customer
Actor EBook as ebook
Actor Publisher as publisher
rectangle "Book Catalogue" {
    together {
        Actor "Book Database" as bookLog
        (Retrieve Information) as getBook
        customer -- getBook
        getBook -- ebook
        getBook -- bookLog

        (Update Catalogue) as updateCatalogue
        ebook -- updateCatalogue
        updateCatalogue -- bookLog
    }

    together {
        (Place Order) as order
        customer -- order
        order -- ebook
        order--publisher

        (Cancel Order) as cancelOrder
        customer -- cancelOrder
        cancelOrder -- ebook
        cancelOrder--publisher
    }
}

(Ship To EBook) as shipEBook
shipEBook -- publisher
(Ship To Customer) as shipCustomer
customer -- shipCustomer
ebook -- shipEBook
shipCustomer -- ebook

(Return to EBook) as returnCustomer
(Returnto Publisher) as returnPublisher
customer -- returnCustomer
returnCustomer -- ebook
ebook -- returnPublisher
returnPublisher -- publisher

@endUML

plantuml_deployment_linetype_polyline.png

<think> 我们正在处理的是名为'tips1.xls'的Excel文件,该文件是seaborn库中小费数据集的转存版本。在Python中,我们使用pandas来读取Excel文件,然后进行数据分析可视化。 1. 导入模块:需要导入pandas、numpy、matplotlib.pyplotseaborn。 2. 获取数据:使用pandas的read_excel函数读取'tips1.xls'。 3. 数据预处理:包括缺失值检测处理。 4. 数据分析与可视化:按照要求进行。 关于设置tips1.xls文件,实际上我们不需要在Python中特别设置该文件,只需要确保该文件在当前工作目录中,或者提供正确的路径。 步骤: 1. 导入必要的库 2. 读取Excel文件 3. 进行数据预处理 4. 进行数据分析可视化 注意:由于原始数据是seaborn自带的,我们假设已经将其保存为Excel文件,并且列名与seaborn中的一致。原始列名为:total_bill, tip, sex, smoker, day, time, size。 但是,用户要求将列名改为中文,所以我们需要在读取数据后修改列名。 另外,在数据预处理阶段,我们按照要求删除缺失值: - 首先,删除一行中有两个及以上缺失值的行(使用thresh参数) - 然后,删除'sex'或'time'为缺失值的行 接下来,我们按照要求进行各项分析。 由于用户的问题是关于如何设置tips1.xls,实际上我们只需要正确读取它即可。因此,以下代码将展示如何读取并设置该文件: 注意:确保文件'tips1.xls'在代码运行的同一目录下,或者使用绝对路径。 示例代码: </think> 在使用 Seaborn 自带的小费数据集转存的 Excel 文件 `tips1.xls` 进行数据分析与可视化时,需要遵循以下设置方法: ### 1. 文件位置设置 - **当前目录存储**:将 `tips1.xls` 文件放置在 Python 脚本的**当前工作目录**中 - **绝对路径指定**:如果文件不在当前目录,需提供**完整路径** ```python # 示例:Windows 系统路径 df = pd.read_excel(r'C:\data\tips1.xls') # 示例:Mac/Linux 系统路径 df = pd.read_excel('/home/user/data/tips1.xls') ``` ### 2. 列名映射配置 由于 Seaborn 原始数据集列名为英文,需在读取时或读取后映射为中文: ```python # 方法1:读取时重命名 df = pd.read_excel('tips1.xls', names=['消费总额','小费','性别','是否吸烟','星期','聚餐时间段','人数']) # 方法2:读取后重命名 df = df.rename(columns={ 'total_bill': '消费总额', 'tip': '小费', 'sex': '性别', 'smoker': '是否吸烟', 'day': '星期', 'time': '聚餐时间段', 'size': '人数' }) ``` ### 3. 数据类型设置 确保分类数据的正确类型转换: ```python # 分类数据转换 df['性别'] = df['性别'].astype('category') df['是否吸烟'] = df['是否吸烟'].map({'Yes': '是', 'No': '否'}).astype('category') df['聚餐时间段'] = df['聚餐时间段'].astype('category') df['星期'] = df['星期'].astype('category') ``` ### 4. 缺失值处理配置 针对转存可能产生的缺失值: ```python # 删除行内有两个及以上缺失值的记录 df = df.dropna(thresh=len(df.columns)-1) # 删除关键字段缺失的行 df = df.dropna(subset=['性别', '聚餐时间段']) ``` ### 5. 新增计算字段 为满足分析需求添加衍生字段: ```python # 人均消费 df['人均消费'] = df['消费总额'] / df['人数'] # 小费比例(慷慨度指标) df['小费率'] = (df['小费'] / df['消费总额'] * 100).round(2) ``` ### 6. 完整数据加载示例 ```python import pandas as pd # 加载数据并设置中文列名 df = pd.read_excel('tips1.xls') df = df.rename(columns={ 'total_bill': '消费总额', 'tip': '小费', 'sex': '性别', 'smoker': '是否吸烟', 'day': '星期', 'time': '聚餐时间段', 'size': '人数' }) # 数据类型转换 df['性别'] = df['性别'].astype('category') df['是否吸烟'] = df['是否吸烟'].map({'Yes': '是', 'No': '否'}).astype('category') df['聚餐时间段'] = df['聚餐时间段'].astype('category') # 缺失值处理 df = df.dropna(thresh=6) # 保留至少6列有效数据的行 df = df.dropna(subset=['性别', '聚餐时间段']) # 添加计算字段 df['人均消费'] = df['消费总额'] / df['人数'] df['小费率'] = (df['小费'] / df['消费总额'] * 100).round(2) # 验证数据 print(df.info()) print(df.head()) ``` ### 关键注意事项 1. **文件格式**:确保文件为真正的 `.xls` 格式,非 `.xlsx` 2. **中文兼容**:若遇中文乱码,添加编码参数: ```python df = pd.read_excel('tips1.xls', engine='openpyxl') ``` 3. **内存优化**:对于大数据集,指定数据类型减少内存占用: ```python dtypes = { '消费总额': 'float32', '小费': 'float32', '人数': 'int8' } df = pd.read_excel('tips1.xls', dtype=dtypes) ``` > 正确设置后的数据结构应包含:7个原始列(含中文列名)+ 2个计算列(人均消费、小费率),总记录数约244条(原始数据集量级),无缺失值的关键字段[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值