function UITalent:DrawLines() self.mUI.lines:ClearLines() self.mUI.lines.LineWidth = 5 self.mLineCfg = {} self.mTalentNodePos = {} local itemWidth ,itemHeight = self.mUI.itemRect.sizeDelta.x / 2,self.mUI.itemRect.sizeDelta.y / 2 for i, talent in ipairs(self.mUI.listInfo) do if common.table.notempty(talent) then local cfg = talent.cfg local col,row = cfg.Postition[1], cfg.Postition[2] local pos = self.mUI.list:GetItemPos(row - 1,col - 1) self.mTalentNodePos[cfg.Id] = Vector2(pos.x + itemWidth,pos.y - itemHeight) if common.table.notempty(cfg.NeedTalent) then local fromTalent = cfg.NeedTalent[1] local fromlevel = HeroHelper:GetHeroTalentLevel(self.mHeroInfo.cfgid,fromTalent) local tolevel = HeroHelper:GetHeroTalentLevel(self.mHeroInfo.cfgid,cfg.Id) local lineType = (fromlevel > 0 and tolevel > 0) and 1 or 2 table.insert(self.mLineCfg,{to = cfg.Id,from = fromTalent ,lineType = lineType}) end end end for _ , linecfg in ipairs(self.mLineCfg) do self.mUI.lines:AddLineByLocalPos(self.mTalentNodePos[linecfg.from],self.mTalentNodePos[linecfg.to],linecfg.lineType) end end 解释这个方法
时间: 2024-04-05 13:32:57 浏览: 109
这一个Lua语言编写的方法,它属于一个名为UITalent的类。该方法的作用是绘制UI上的连线,实现天赋树节点之间的连线效果。该方法首先通过清除已有的连线,设置连线宽度和一些变量。然后它遍历天赋树节点,获取每个节点的位置信息,存储在一个名为mTalentNodePos的字典中。如果节点需要连接到其他节点,它将从当前节点到目标节点的信息存储在一个名为mLineCfg的列表中。最后,该方法将遍历mLineCfg列表中的所有连接信息,调用AddLineByLocalPos方法在UI上绘制对应的连线。
相关问题
void ocpnDC::DrawLines(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset, bool b_hiqual)
这是一段 C++ 代码,函数名为 `DrawLines`,它接受五个参数:整数 `n` 表示点的数量,`wxPoint points[]` 表示一个包含点坐标的数组,`wxCoord xoffset` 和 `wxCoord yoffset` 分别表示 X 和 Y 方向上的偏移量,`bool b_hiqual` 表示是否启用高质量的绘制。
该函数的作用是在给定的偏移量下绘制一组连续的线段,线段的端点由数组 `points` 中的坐标确定。如果 `b_hiqual` 参数为真,则使用高质量的绘制方式,否则使用普通的绘制方式。
调试并运行下述案例代码,给代码做注释。在此基础上补充票房 TOP10 的柱状 图展示。 import pandas as pd import numpy as np from matplotlib import pyplot as plt from matplotlib.ticker import MultipleLocator datas = pd.read_csv(r'2015-2020.txt', index_col=0) datas = datas.sort_index(ascending=False) datas = pd.DataFrame(datas.values, index=range(1, 11), \ columns=datas.columns) data2020 = pd.read_csv(r'2020.txt') def drawLines(): ax = plt.subplot(131) for date in datas.columns: plt.plot([10 - i for i in range(datas.shape[0])], \ datas[date], label=date) plt.ylim(0, 600000) ymajorLocator = MultipleLocator(50000) xmajorLocator = MultipleLocator(1) ax.yaxis.set_major_locator(ymajorLocator) ax.xaxis.set_major_locator(xmajorLocator) plt.title('2015-2020 年度票房 Top10 折线图') plt.xlabel('票房名次') plt.grid() plt.legend() def drawPie(): plt.subplot(233) plt.pie(datas['2019'], autopct='%1.1f%%') plt.title('2019 年度票房 Top10 饼图') plt.subplot(236) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['font.family'] = 'sans-serif' plt.pie(data2020['boxoffice'], autopct='%1.1f%%', \ labels=data2020['name']) plt.title('2020 年度票房 Top10 饼图') if __name__ == '__main__': plt.subplots(figsize=(20, 8)) drawLines() drawPie() plt.show()
```python
# 导入 pandas, numpy, pyplot 和 MultipleLocator 库
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.ticker import MultipleLocator
# 读取数据并按照时间降序排序
datas = pd.read_csv(r'2015-2020.txt', index_col=0)
datas = datas.sort_index(ascending=False)
# 将数据转换为 DataFrame 格式,索引是票房排名,列是年份
datas = pd.DataFrame(datas.values, index=range(1, 11), columns=datas.columns)
# 读取 2020 年数据
data2020 = pd.read_csv(r'2020.txt')
# 绘制 2015-2020 年度票房 Top10 折线图
def drawLines():
ax = plt.subplot(131) # 创建子图
for date in datas.columns: # 循环每年的票房数据
plt.plot([10 - i for i in range(datas.shape[0])], datas[date], label=date) # 绘制折线图
plt.ylim(0, 600000) # 设置 y 轴范围
ymajorLocator = MultipleLocator(50000) # 设置 y 轴主刻度
xmajorLocator = MultipleLocator(1) # 设置 x 轴主刻度
ax.yaxis.set_major_locator(ymajorLocator) # 设置 y 轴主刻度
ax.xaxis.set_major_locator(xmajorLocator) # 设置 x 轴主刻度
plt.title('2015-2020 年度票房 Top10 折线图') # 设置标题
plt.xlabel('票房名次') # 设置 x 轴标签
plt.grid() # 显示网格线
plt.legend() # 显示图例
# 绘制 2019 年度票房 Top10 饼图和 2020 年度票房 Top10 饼图
def drawPie():
plt.subplot(233) # 创建子图
plt.pie(datas['2019'], autopct='%1.1f%%') # 绘制饼图
plt.title('2019 年度票房 Top10 饼图') # 设置标题
plt.subplot(236) # 创建子图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体
plt.rcParams['font.family'] = 'sans-serif'
plt.pie(data2020['boxoffice'], autopct='%1.1f%%', labels=data2020['name']) # 绘制饼图
plt.title('2020 年度票房 Top10 饼图') # 设置标题
if __name__ == '__main__':
plt.subplots(figsize=(20, 8)) # 创建画布
drawLines() # 绘制折线图
drawPie() # 绘制饼图
plt.show() # 显示图形
```
补充票房 TOP10 的柱状图展示如下:
```python
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
# 读取数据并按照时间降序排序
datas = pd.read_csv(r'2015-2020.txt', index_col=0)
datas = datas.sort_index(ascending=False)
datas = pd.DataFrame(datas.values, index=range(1, 11), columns=datas.columns)
# 绘制柱状图
plt.subplots(figsize=(20, 8))
plt.bar(datas.index, datas['2020'])
plt.xticks(datas.index, datas.index)
plt.title('2020 年度票房 Top10 柱状图')
plt.xlabel('票房排名')
plt.ylabel('票房(万元)')
plt.show()
```
柱状图展示如下:
注意:柱状图只显示了 2020 年的数据。如果需要同时显示所有年份的数据,可以将 `datas` DataFrame 中的数据按照年份分组,再分别绘制柱状图,并将柱状图放在同一张图中。
阅读全文