Прозрачность линии xlsxwriter не работает, если цвет не изменен - PullRequest
0 голосов
/ 07 мая 2018

Из документации я вижу, что можно использовать прозрачность для областей диаграммы. Мне было интересно, если прозрачность для линейных диаграмм поддерживается в XlsxWriter. Синтаксис:

chart.add_series({
    'name': 'something',
    'categories': [<excel range>],
    'values': [<excel range>],
    'line':   {'color': 'yellow','transparency': 25},
})

показывает мой график в желтом цвете. Однако прозрачности нет.

Итак, возможна ли прозрачность для линейных графиков? если так, какой правильный синтаксис?

Я использую Excel 2016 на Python 3.6.3. Также стоит упомянуть, как я использую xlsxwriter:

 writer = pd.ExcelWriter(path, engine='xlsxwriter', datetime_format='dd-mmm-yy')

UPDATE:

Выполнение кода из принятого ответа дает желаемый результат: enter image description here однако, если в построении линии не используется параметр цвета, прозрачность работать не будет:

import xlsxwriter

workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()

    # Create a new Chart object.
chart = workbook.add_chart({'type': 'line'})

# Write some data to add to plot on the chart.
data = [
    [1, 2, 3, 4, 5],
    [2, 4, 6, 8, 10],
    [3, 6, 9, 12, 15],
]

worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2])

# Configure the charts. In simplest case we just add some data series.
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
chart.add_series({'values': '=Sheet1!$C$1:$C$5',
                  'line':   {'width':0.25,'transparency': 25}})

# Insert the chart into the worksheet.
worksheet.insert_chart('A7', chart)

workbook.close()

В качестве проверки я заменил параметр цвета для параметра ширины, фактически наша линия показывает правильную ширину, но прозрачности нет: enter image description here

1 Ответ

0 голосов
/ 07 мая 2018

Не задокументировано, но поддерживается:

import xlsxwriter

workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()

# Create a new Chart object.
chart = workbook.add_chart({'type': 'line'})

# Write some data to add to plot on the chart.
data = [
    [1, 2, 3, 4, 5],
    [2, 4, 6, 8, 10],
    [3, 6, 9, 12, 15],
]

worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2])

# Configure the charts. In simplest case we just add some data series.
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
chart.add_series({'values': '=Sheet1!$C$1:$C$5',
                  'line':   {'color': 'yellow',
                             'transparency': 25}})

# Insert the chart into the worksheet.
worksheet.insert_chart('A7', chart)

workbook.close()

Вывод (смотрите, что линии сетки частично видны через желтую линию):

enter image description here

Обновление: Это задокументировано сейчас.

Обновление 2:

однако, если в построении линии не используется параметр цвета, прозрачность работать не будет:

Это поведение по умолчанию в Excel. Невозможно включить прозрачность без указания цвета. Это связано с тем, что внутренне прозрачность хранится в процентах от альфа-значения цвета, например:

        <a:ln>
          <a:solidFill>
            <a:srgbClr val="4F81BD">
              <a:alpha val="50000"/>
            </a:srgbClr>
          </a:solidFill>
        </a:ln>

Это неочевидно в интерфейсе Excel 2015 и более поздних версий, хотя вы можете видеть, что линия меняется с «Автоматически» на «Сплошная линия» при изменении прозрачности. В старых версиях Excel было яснее, что перед изменением прозрачности необходимо было указать сплошной цвет.

Я обновлю документацию по XlsxWriter, чтобы выделить это. В качестве обходного пути пользователь должен указать цвет при изменении прозрачности.

...