首页 > 解决方案 > Python Google Spreadsheet API 气泡图未正确显示

问题描述

我使用谷歌示例https://developers.google.com/chart/interactive/docs/gallery/bubblechart使用 Python v3.7.8 测试 Google Spreadshhet API v4 以创建气泡图。

数据存储在我创建气泡图的谷歌驱动器中的电子表格中。

在此处输入图像描述

气泡图已创建,但气泡不可见/不显示。此后的代码:

from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

...

body = {'requests': 
        [{'addChart': 
          {'chart': 
           {'spec': 
            {'title': 'Correlation between life expectancy, fertility rate and population of some world countries (2010)', 
             'titleTextPosition': 
             {'horizontalAlignment': 'CENTER'}, 
             'bubbleChart': 
             {'legendPosition': 'RIGHT_LEGEND',
              'domain': 
              {'sourceRange': 
               {'sources': 
                [{'sheetId': 909072886, 
                  'startRowIndex': 17, 
                  'endRowIndex': 27, 
                  'startColumnIndex': 1, 
                  'endColumnIndex': 2}]}}, 
              'series': 
              {'sourceRange': 
               {'sources': 
                [{'sheetId': 909072886, 
                  'startRowIndex': 17, 
                  'endRowIndex': 27, 
                  'startColumnIndex': 2, 
                  'endColumnIndex': 3}]}}, 
              'groupIds': 
              {'sourceRange': 
               {'sources': 
                [{'sheetId': 909072886, 
                 'startRowIndex': 17, 
                 'endRowIndex': 27, 
                 'startColumnIndex': 3, 
                 'endColumnIndex': 4}]}}, 
              'bubbleLabels': 
              {'sourceRange': 
               {'sources': 
                [{'sheetId': 909072886, 
                  'startRowIndex': 17, 
                  'endRowIndex': 27, 
                  'startColumnIndex': 0, 
                  'endColumnIndex': 1}]}}, 
              'bubbleSizes': 
              {'sourceRange': 
               {'sources': 
                [{'sheetId': 909072886, 
                  'startRowIndex': 17, 
                  'endRowIndex': 27, 
                  'startColumnIndex': 4, 
                  'endColumnIndex': 5}]}}, 
              'bubbleOpacity': 1.0}}, 
            'position': 
            {'overlayPosition': 
             {'anchorCell': 
              {'sheetId': 909072886, 
               'rowIndex': 61, 
               'columnIndex': 6}, 
               'offsetXPixels': 0, 
               'offsetYPixels': 0, 
               'widthPixels': 600, 
               'heightPixels': 371
             }
            }
           }
          }
         }
        ]
       }

response = service.spreadsheets().batchUpdate(spreadsheetId=file_id, body=body).execute()

我应该得到以下信息:

在此处输入图像描述

但我明白了:没有显示气泡。备注:将鼠标悬停在(不可见)气泡上,它会显示该国家所有正确的数据(预期寿命、生育率、人口、颜色正确的地区)!

在此处输入图像描述

不要犹豫支持我!先感谢您。

标签: pythonapigoogle-sheetsgoogle-sheets-apibubble-chart

解决方案


在这种情况下,我建议在请求正文中包含bubbleMaxRadiusSizebubbleMinRadiusSize,如下所示。当您的请求正文被修改时,它变为如下。

从:

'bubbleOpacity': 1.0}},

至:

'bubbleOpacity': 1.0,
'bubbleMaxRadiusSize': 50,
'bubbleMinRadiusSize': 5
}},
  • 在此修改中,505分别用作 和 的样本bubbleMaxRadiusSizebubbleMinRadiusSize。所以请根据您的实际情况修改这些值。

结果:

在此处输入图像描述

整个脚本:

body = {'requests': [{'addChart': {'chart': {'spec': {'title': 'Correlation between life expectancy, fertility rate and population of some world countries (2010)', 'titleTextPosition': {'horizontalAlignment': 'CENTER'},
     'bubbleChart': {
    'legendPosition': 'RIGHT_LEGEND',
    'domain': {'sourceRange': {'sources': [{
        'sheetId': 909072886,
        'startRowIndex': 17,
        'endRowIndex': 27,
        'startColumnIndex': 1,
        'endColumnIndex': 2,
        }]}},
    'series': {'sourceRange': {'sources': [{
        'sheetId': 909072886,
        'startRowIndex': 17,
        'endRowIndex': 27,
        'startColumnIndex': 2,
        'endColumnIndex': 3,
        }]}},
    'groupIds': {'sourceRange': {'sources': [{
        'sheetId': 909072886,
        'startRowIndex': 17,
        'endRowIndex': 27,
        'startColumnIndex': 3,
        'endColumnIndex': 4,
        }]}},
    'bubbleLabels': {'sourceRange': {'sources': [{
        'sheetId': 909072886,
        'startRowIndex': 17,
        'endRowIndex': 27,
        'startColumnIndex': 0,
        'endColumnIndex': 1,
        }]}},
    'bubbleSizes': {'sourceRange': {'sources': [{
        'sheetId': 909072886,
        'startRowIndex': 17,
        'endRowIndex': 27,
        'startColumnIndex': 4,
        'endColumnIndex': 5,
        }]}},
    'bubbleOpacity': 1.0,
    'bubbleMaxRadiusSize': 50,  # Added
    'bubbleMinRadiusSize': 5,  # Added
    }}, 'position': {'overlayPosition': {
    'anchorCell': {'sheetId': 909072886, 'rowIndex': 61, 'columnIndex': 6},
    'offsetXPixels': 0,
    'offsetYPixels': 0,
    'widthPixels': 600,
    'heightPixels': 371,
    }}}}}]}

response = service.spreadsheets().batchUpdate(spreadsheetId=file_id, body=body).execute()

参考:


推荐阅读