예제 #1
0
def createChartByType(type):
    if type == "bar":
        chart = BarChart()
    elif type == "line":
        chart = LineChart()
    elif type == "radar":
        chart = RadarChart()
    return chart
예제 #2
0
wb = openpyxl.load_workbook('재고장.xlsx')
ws = wb['물류재고장']

# chart 데이터 참조범위 지정
data1 = Reference(ws, min_col=5, min_row=1, max_col=6, max_row=12)
# data2 = Reference(ws, 5, 2, 5, 12)
labels = Reference(ws, 1, 2, 1, 12)

# 차트 종류 지정
# chart = BarChart()    # 막대그래프
# chart.type = 'bar'    # 가로(bar), 세로(col) - 디폴트값
# chart = LineChart()     # 꺾은 선 그래프
# chart = AreaChart()     # 영역형 그래프
# chart = PieChart()      # 원형 차트
chart = RadarChart()  # 방사형 차트

chart.grouping = 'stacked'  # 누적
# chart.overlap = 100       # for barchart: 100

chart.add_data(data1,
               titles_from_data=True)  # title...=True: 첫 셀값을 계열값(범례)로 사용
# chart.add_data(data2)
chart.set_categories(labels)

chart.title = '재고현황'  # 차트 제목
# chart.x_axis.title = '랙번호'        # x축 제목
# chart.y_axis.title = '재고량'        # y축 제목

chart.height = 10  # 차트 가로 크기
chart.width = 20  # 차트 세로 크기
예제 #3
0
import openpyxl
from openpyxl.chart import RadarChart, Reference

wb = openpyxl.load_workbook(r"..\data\radar_chart.xlsx")
sh = wb.active

data = Reference(sh, min_col=2, max_col=4, min_row=1, max_row=sh.max_row)
labels = Reference(sh, min_col=1, min_row=2, max_row=sh.max_row)

chart = RadarChart()
#デフォルトはstandard
#filledは塗りつぶし
#chart.type = "filled"
chart.title = "部門別売上"
chart.add_data(data, titles_from_data=True)
chart.set_categories(labels)

sh.add_chart(chart, "F2")
wb.save(r"..\data\radar_chart.xlsx")
예제 #4
0
    ['Jan', 0, 2500, 500, 0,],
    ['Feb', 0, 5500, 750, 1500],
    ['Mar', 0, 9000, 1500, 2500],
    ['Apr', 0, 6500, 2000, 4000],
    ['May', 0, 3500, 5500, 3500],
    ['Jun', 0, 0, 7500, 1500],
    ['Jul', 0, 0, 8500, 800],
    ['Aug', 1500, 0, 7000, 550],
    ['Sep', 5000, 0, 3500, 2500],
    ['Oct', 8500, 0, 2500, 6000],
    ['Nov', 3500, 0, 500, 5500],
    ['Dec', 500, 0, 100, 3000 ],
]

for row in rows:
    ws.append(row)

chart = RadarChart()
chart.type = "filled"
labels = Reference(ws, min_col=1, min_row=2, max_row=13)
data = Reference(ws, min_col=2, max_col=5, min_row=1, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(labels)
chart.style = 26
chart.title = "Garden Centre Sales"
chart.y_axis.delete = True

ws.add_chart(chart, "A17")

wb.save("radar.xlsx")
예제 #5
0
def excel_create_chart(excel_file):
    """
    生成图表
    :param excel_file:
    :return:
    """
    wb = load_workbook(excel_file)
    print(f'{datetime.now()} | 信息 | 开始Excel图表渲染')
    # 进行净值走势图渲染
    net_worth_sheet = wb['账户净值']
    net_worth_chart_sheet = wb.create_chartsheet(title='净值走势图')
    chart1 = LineChart()
    dates1 = Reference(net_worth_sheet,
                       min_col=1,
                       min_row=2,
                       max_row=len(net_worth_sheet['A']))
    data1 = Reference(net_worth_sheet,
                      min_col=3,
                      min_row=1,
                      max_row=len(net_worth_sheet['C']))
    chart1.add_data(data1, titles_from_data=True)
    chart1.y_axis = NumericAxis(title='净值', majorTickMark='out')
    chart1.x_axis = TextAxis(majorTickMark='out',
                             tickLblSkip=10,
                             tickMarkSkip=10,
                             noMultiLvlLbl=True,
                             numFmt='yyyy-mm-dd')
    chart1.legend = None
    chart1.title = str()
    chart1.style = 1
    chart1.set_categories(dates1)
    net_worth_chart_sheet.add_chart(chart1)
    # 进行权益走势图渲染
    account_sheet = wb['账户统计']
    account_chart_sheet = wb.create_chartsheet(title='权益走势图')
    dates2 = Reference(account_sheet,
                       min_col=1,
                       min_row=2,
                       max_row=len(account_sheet['A']))
    chart2 = LineChart(varyColors=True)
    data2 = Reference(account_sheet,
                      min_col=8,
                      min_row=1,
                      max_row=len(account_sheet['H']))
    chart2.add_data(data2, titles_from_data=True)
    chart2.y_axis = NumericAxis(title='权益', majorTickMark='out')
    chart2.legend = None
    chart2.set_categories(dates2)
    chart3 = BarChart()
    data3 = Reference(account_sheet,
                      min_col=10,
                      min_row=1,
                      max_row=len(account_sheet['J']))
    chart3.add_data(data3, titles_from_data=True)
    chart3.y_axis = NumericAxis(axId=200,
                                title='风险度',
                                majorGridlines=None,
                                majorTickMark='out',
                                crosses='max')
    chart3.x_axis = TextAxis(majorTickMark='out',
                             tickLblSkip=10,
                             tickMarkSkip=10,
                             noMultiLvlLbl=True,
                             numFmt='yyyy-mm-dd')
    chart3.legend = None
    chart3.set_categories(dates2)
    chart2 += chart3
    account_chart_sheet.add_chart(chart2)
    # 进行交易分布图的渲染
    categories_analysis_sheet = wb['交易分析(按品种)']
    trading_frequency_analysis_sheet = wb.create_chartsheet(title='交易分布图')
    labels = Reference(categories_analysis_sheet,
                       min_col=1,
                       min_row=2,
                       max_row=len(categories_analysis_sheet['A']))
    chart4 = PieChart(varyColors=True)
    chart4.style = 34
    data4 = Reference(categories_analysis_sheet,
                      min_col=4,
                      min_row=2,
                      max_row=len(categories_analysis_sheet['D']))
    chart4.add_data(data4)
    chart4.set_categories(labels)
    chart4.legend = None
    # chart4.series[0].data_points = [DataPoint(idx=i, explosion=8)
    #                                 for i in range(len(categories_analysis_sheet['D']) - 1)]
    chart4.series[0].dLbls = DataLabelList(dLblPos='bestFit',
                                           showPercent=True,
                                           showCatName=True,
                                           showVal=True,
                                           showLeaderLines=True)
    chart4.layout = Layout(manualLayout=ManualLayout(
        x=0, y=0, h=0.75, w=0.75, xMode='factor', yMode='factor'))
    trading_frequency_analysis_sheet.add_chart(chart4)
    # 进行品种盈亏图的渲染
    categories_win_and_loss_chart_sheet = wb.create_chartsheet(title='品种盈亏图')
    chart5 = BarChart(barDir='col')
    chart5.style = 18
    data5 = Reference(categories_analysis_sheet,
                      min_col=2,
                      min_row=2,
                      max_row=len(categories_analysis_sheet['B']))
    chart5.add_data(data5)
    chart5.set_categories(labels)
    chart5.legend = None
    chart5.series[0].dLbls = DataLabelList(showVal=True)
    chart5.y_axis = NumericAxis(title='平仓盈亏',
                                majorTickMark='out',
                                minorTickMark='out')
    categories_win_and_loss_chart_sheet.add_chart(chart5)
    # 进行交易盈亏图的渲染
    trading_win_and_loss_chart_sheet = wb.create_chartsheet(title='交易盈亏图')
    chart6 = RadarChart()
    chart6.style = 24
    data6 = Reference(categories_analysis_sheet,
                      min_col=8,
                      max_col=9,
                      min_row=1,
                      max_row=categories_analysis_sheet.max_row)
    chart6.add_data(data6, titles_from_data=True)
    chart6.set_categories(labels)
    trading_win_and_loss_chart_sheet.add_chart(chart6)
    # 图表保存
    wb.save(excel_file)
    wb.close()
    # 输出信息
    print(f'{datetime.now()} | 信息 | 已生成Excel图表')
예제 #6
0
        0,
    ],
    ['Feb', 0, 5500, 750, 1500],
    ['Mar', 0, 9000, 1500, 2500],
    ['Apr', 0, 6500, 2000, 4000],
    ['May', 0, 3500, 5500, 3500],
    ['Jun', 0, 0, 7500, 1500],
    ['Jul', 0, 0, 8500, 800],
    ['Aug', 1500, 0, 7000, 550],
    ['Sep', 5000, 0, 3500, 2500],
    ['Oct', 8500, 0, 2500, 6000],
    ['Nov', 3500, 0, 500, 5500],
    ['Dec', 500, 0, 100, 3000],
]

for row in rows:
    ws.append(row)

chart = RadarChart()
chart.type = "filled"
labels = Reference(ws, min_col=1, min_row=2, max_row=13)
data = Reference(ws, min_col=2, max_col=5, min_row=1, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(labels)
chart.style = 26
chart.title = "Garden Centre Sales"
chart.y_axis.delete = True

ws.add_chart(chart, "A17")

wb.save("radar.xlsx")
예제 #7
0
    graph_list.append(line_dict)'''        
    # Build Rate vs Atten vs Orientation
    for intColumn in range(len(attens)):
        c = 2 + intColumn
        this_atten = attens[intColumn]
        for intRow in range(len(angles)):
            r = 2 + intRow
            this_angle = angles[intRow]
            cell_value = 0
            for datum in data_set:
                if datum['rot_angle'] == this_angle and datum['atten'] == this_atten:
                    cell_value = datum['thru_avg']
                    break
            ws.cell(row = r, column = c, value = cell_value)

    chart = RadarChart()
    #chart.type = "filled"
    labels = Reference(ws, min_col=1, min_row=2, max_row=len(angles) + 1)
    data = Reference(ws, min_col=2, max_col=len(attens) + 1, min_row= 1, max_row=len(angles) + 1)
    chart.add_data(data, titles_from_data=True)
    chart.set_categories(labels)
    for intN in range(len(attens)):
        chart.series[intN].graphicalProperties.line.width = 1    
    #chart.style = 26
    chart.title = "Rate vs Attenuation vs Orientation"
    chart.width = chart.width * 1.5
    chart.height = chart.height * 2
    chart.y_axis.majorUnit = 5
    #chart.y_axis.delete = True

    ws.add_chart(chart, "A17")
예제 #8
0
    ['Mar', 0, 9000, 1500, 2500],
    ['Apr', 0, 6500, 2000, 4000],
    ['May', 0, 3500, 5500, 3500],
    ['Jun', 0, 0, 7500, 1500],
    ['Jul', 0, 0, 8500, 800],
    ['Aug', 1500, 0, 7000, 550],
    ['Sep', 5000, 0, 3500, 2500],
    ['Oct', 8500, 0, 2500, 6000],
    ['Nov', 3500, 0, 500, 5500],
    ['Dec', 500, 0, 100, 3000 ],
]

for row in rows:
    ws13.append(row)

chart = RadarChart()
chart.type = "filled"
labels = Reference(ws13, min_col=1, min_row=2, max_row=13)
data = Reference(ws13, min_col=2, max_col=5, min_row=1, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(labels)
chart.style = 26
chart.title = "Garden Centre Sales"
chart.y_axis.delete = True

ws13.add_chart(chart, "A17")