[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-d50b4e47-332a-45e8-a7b0-212231427544":3,"$fQEjZx2YzJpNcJ8ixfGxa2I6Zv4P8O1c2GAPY_1CQ-0M":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"d50b4e47-332a-45e8-a7b0-212231427544","seaborn","Seaborn 是一个用于创建出版物质量统计图形的 Python 可视化库。使用这项技能进行数据集导向的绘图、多元分析、自动统计估计以及用最少代码创建复杂的多面板图形。","cat_life_career","mod_other","sickn33,other","---\nname: seaborn\ndescription: \"Seaborn is a Python visualization library for creating publication-quality statistical graphics. Use this skill for dataset-oriented plotting, multivariate analysis, automatic statistical estimation, and complex multi-panel figures with minimal code.\"\nlicense: BSD-3-Clause license\nmetadata:\n    skill-author: K-Dense Inc.\nrisk: unknown\nsource: community\n---\n\n# Seaborn Statistical Visualization\n\n## When to Use\n- You need publication-quality statistical graphics directly from tabular datasets.\n- You are exploring multivariate relationships, distributions, or grouped comparisons with minimal plotting code.\n- You want seaborn's dataset-oriented API and statistical defaults on top of matplotlib.\n\n## Overview\n\nSeaborn is a Python visualization library for creating publication-quality statistical graphics. Use this skill for dataset-oriented plotting, multivariate analysis, automatic statistical estimation, and complex multi-panel figures with minimal code.\n\n## Design Philosophy\n\nSeaborn follows these core principles:\n\n1. **Dataset-oriented**: Work directly with DataFrames and named variables rather than abstract coordinates\n2. **Semantic mapping**: Automatically translate data values into visual properties (colors, sizes, styles)\n3. **Statistical awareness**: Built-in aggregation, error estimation, and confidence intervals\n4. **Aesthetic defaults**: Publication-ready themes and color palettes out of the box\n5. **Matplotlib integration**: Full compatibility with matplotlib customization when needed\n\n## Quick Start\n\n```python\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\n# Load example dataset\ndf = sns.load_dataset('tips')\n\n# Create a simple visualization\nsns.scatterplot(data=df, x='total_bill', y='tip', hue='day')\nplt.show()\n```\n\n## Core Plotting Interfaces\n\n### Function Interface (Traditional)\n\nThe function interface provides specialized plotting functions organized by visualization type. Each category has **axes-level** functions (plot to single axes) and **figure-level** functions (manage entire figure with faceting).\n\n**When to use:**\n- Quick exploratory analysis\n- Single-purpose visualizations\n- When you need a specific plot type\n\n### Objects Interface (Modern)\n\nThe `seaborn.objects` interface provides a declarative, composable API similar to ggplot2. Build visualizations by chaining methods to specify data mappings, marks, transformations, and scales.\n\n**When to use:**\n- Complex layered visualizations\n- When you need fine-grained control over transformations\n- Building custom plot types\n- Programmatic plot generation\n\n```python\nfrom seaborn import objects as so\n\n# Declarative syntax\n(\n    so.Plot(data=df, x='total_bill', y='tip')\n    .add(so.Dot(), color='day')\n    .add(so.Line(), so.PolyFit())\n)\n```\n\n## Plotting Functions by Category\n\n### Relational Plots (Relationships Between Variables)\n\n**Use for:** Exploring how two or more variables relate to each other\n\n- `scatterplot()` - Display individual observations as points\n- `lineplot()` - Show trends and changes (automatically aggregates and computes CI)\n- `relplot()` - Figure-level interface with automatic faceting\n\n**Key parameters:**\n- `x`, `y` - Primary variables\n- `hue` - Color encoding for additional categorical\u002Fcontinuous variable\n- `size` - Point\u002Fline size encoding\n- `style` - Marker\u002Fline style encoding\n- `col`, `row` - Facet into multiple subplots (figure-level only)\n\n```python\n# Scatter with multiple semantic mappings\nsns.scatterplot(data=df, x='total_bill', y='tip',\n                hue='time', size='size', style='sex')\n\n# Line plot with confidence intervals\nsns.lineplot(data=timeseries, x='date', y='value', hue='category')\n\n# Faceted relational plot\nsns.relplot(data=df, x='total_bill', y='tip',\n            col='time', row='sex', hue='smoker', kind='scatter')\n```\n\n### Distribution Plots (Single and Bivariate Distributions)\n\n**Use for:** Understanding data spread, shape, and probability density\n\n- `histplot()` - Bar-based frequency distributions with flexible binning\n- `kdeplot()` - Smooth density estimates using Gaussian kernels\n- `ecdfplot()` - Empirical cumulative distribution (no parameters to tune)\n- `rugplot()` - Individual observation tick marks\n- `displot()` - Figure-level interface for univariate and bivariate distributions\n- `jointplot()` - Bivariate plot with marginal distributions\n- `pairplot()` - Matrix of pairwise relationships across dataset\n\n**Key parameters:**\n- `x`, `y` - Variables (y optional for univariate)\n- `hue` - Separate distributions by category\n- `stat` - Normalization: \"count\", \"frequency\", \"probability\", \"density\"\n- `bins` \u002F `binwidth` - Histogram binning control\n- `bw_adjust` - KDE bandwidth multiplier (higher = smoother)\n- `fill` - Fill area under curve\n- `multiple` - How to handle hue: \"layer\", \"stack\", \"dodge\", \"fill\"\n\n```python\n# Histogram with density normalization\nsns.histplot(data=df, x='total_bill', hue='time',\n             stat='density', multiple='stack')\n\n# Bivariate KDE with contours\nsns.kdeplot(data=df, x='total_bill', y='tip',\n            fill=True, levels=5, thresh=0.1)\n\n# Joint plot with marginals\nsns.jointplot(data=df, x='total_bill', y='tip',\n              kind='scatter', hue='time')\n\n# Pairwise relationships\nsns.pairplot(data=df, hue='species', corner=True)\n```\n\n### Categorical Plots (Comparisons Across Categories)\n\n**Use for:** Comparing distributions or statistics across discrete categories\n\n**Categorical scatterplots:**\n- `stripplot()` - Points with jitter to show all observations\n- `swarmplot()` - Non-overlapping points (beeswarm algorithm)\n\n**Distribution comparisons:**\n- `boxplot()` - Quartiles and outliers\n- `violinplot()` - KDE + quartile information\n- `boxenplot()` - Enhanced boxplot for larger datasets\n\n**Statistical estimates:**\n- `barplot()` - Mean\u002Faggregate with confidence intervals\n- `pointplot()` - Point estimates with connecting lines\n- `countplot()` - Count of observations per category\n\n**Figure-level:**\n- `catplot()` - Faceted categorical plots (set `kind` parameter)\n\n**Key parameters:**\n- `x`, `y` - Variables (one typically categorical)\n- `hue` - Additional categorical grouping\n- `order`, `hue_order` - Control category ordering\n- `dodge` - Separate hue levels side-by-side\n- `orient` - \"v\" (vertical) or \"h\" (horizontal)\n- `kind` - Plot type for catplot: \"strip\", \"swarm\", \"box\", \"violin\", \"bar\", \"point\"\n\n```python\n# Swarm plot showing all points\nsns.swarmplot(data=df, x='day', y='total_bill', hue='sex')\n\n# Violin plot with split for comparison\nsns.violinplot(data=df, x='day', y='total_bill',\n               hue='sex', split=True)\n\n# Bar plot with error bars\nsns.barplot(data=df, x='day', y='total_bill',\n            hue='sex', estimator='mean', errorbar='ci')\n\n# Faceted categorical plot\nsns.catplot(data=df, x='day', y='total_bill',\n            col='time', kind='box')\n```\n\n### Regression Plots (Linear Relationships)\n\n**Use for:** Visualizing linear regressions and residuals\n\n- `regplot()` - Axes-level regression plot with scatter + fit line\n- `lmplot()` - Figure-level with faceting support\n- `residplot()` - Residual plot for assessing model fit\n\n**Key parameters:**\n- `x`, `y` - Variables to regress\n- `order` - Polynomial regression order\n- `logistic` - Fit logistic regression\n- `robust` - Use robust regression (less sensitive to outliers)\n- `ci` - Confidence interval width (default 95)\n- `scatter_kws`, `line_kws` - Customize scatter and line properties\n\n```python\n# Simple linear regression\nsns.regplot(data=df, x='total_bill', y='tip')\n\n# Polynomial regression with faceting\nsns.lmplot(data=df, x='total_bill', y='tip',\n           col='time', order=2, ci=95)\n\n# Check residuals\nsns.residplot(data=df, x='total_bill', y='tip')\n```\n\n### Matrix Plots (Rectangular Data)\n\n**Use for:** Visualizing matrices, correlations, and grid-structured data\n\n- `heatmap()` - Color-encoded matrix with annotations\n- `clustermap()` - Hierarchically-clustered heatmap\n\n**Key parameters:**\n- `data` - 2D rectangular dataset (DataFrame or array)\n- `annot` - Display values in cells\n- `fmt` - Format string for annotations (e.g., \".2f\")\n- `cmap` - Colormap name\n- `center` - Value at colormap center (for diverging colormaps)\n- `vmin`, `vmax` - Color scale limits\n- `square` - Force square cells\n- `linewidths` - Gap between cells\n\n```python\n# Correlation heatmap\ncorr = df.corr()\nsns.heatmap(corr, annot=True, fmt='.2f',\n            cmap='coolwarm', center=0, square=True)\n\n# Clustered heatmap\nsns.clustermap(data, cmap='viridis',\n               standard_scale=1, figsize=(10, 10))\n```\n\n## Multi-Plot Grids\n\nSeaborn provides grid objects for creating complex multi-panel figures:\n\n### FacetGrid\n\nCreate subplots based on categorical variables. Most useful when called through figure-level functions (`relplot`, `displot`, `catplot`), but can be used directly for custom plots.\n\n```python\ng = sns.FacetGrid(df, col='time', row='sex', hue='smoker')\ng.map(sns.scatterplot, 'total_bill', 'tip')\ng.add_legend()\n```\n\n### PairGrid\n\nShow pairwise relationships between all variables in a dataset.\n\n```python\ng = sns.PairGrid(df, hue='species')\ng.map_upper(sns.scatterplot)\ng.map_lower(sns.kdeplot)\ng.map_diag(sns.histplot)\ng.add_legend()\n```\n\n### JointGrid\n\nCombine bivariate plot with marginal distributions.\n\n```python\ng = sns.JointGrid(data=df, x='total_bill', y='tip')\ng.plot_joint(sns.scatterplot)\ng.plot_marginals(sns.histplot)\n```\n\n## Figure-Level vs Axes-Level Functions\n\nUnderstanding this distinction is crucial for effective seaborn usage:\n\n### Axes-Level Functions\n- Plot to a single matplotlib `Axes` object\n- Integrate easily into complex matplotlib figures\n- Accept `ax=` parameter for precise placement\n- Return `Axes` object\n- Examples: `scatterplot`, `histplot`, `boxplot`, `regplot`, `heatmap`\n\n**When to use:**\n- Building custom multi-plot layouts\n- Combining different plot types\n- Need matplotlib-level control\n- Integrating with existing matplotlib code\n\n```python\nfig, axes = plt.subplots(2, 2, figsize=(10, 10))\nsns.scatterplot(data=df, x='x', y='y', ax=axes[0, 0])\nsns.histplot(data=df, x='x', ax=axes[0, 1])\nsns.boxplot(data=df, x='cat', y='y', ax=axes[1, 0])\nsns.kdeplot(data=df, x='x', y='y', ax=axes[1, 1])\n```\n\n### Figure-Level Functions\n- Manage entire figure including all subplots\n- Built-in faceting via `col` and `row` parameters\n- Return `FacetGrid`, `JointGrid`, or `PairGrid` objects\n- Use `height` and `aspect` for sizing (per subplot)\n- Cannot be placed in existing figure\n- Examples: `relplot`, `displot`, `catplot`, `lmplot`, `jointplot`, `pairplot`\n\n**When to use:**\n- Faceted visualizations (small multiples)\n- Quick exploratory analysis\n- Consistent multi-panel layouts\n- Don't need to combine with other plot types\n\n```python\n# Automatic faceting\nsns.relplot(data=df, x='x', y='y', col='category', row='group',\n            hue='type', height=3, aspect=1.2)\n```\n\n## Data Structure Requirements\n\n### Long-Form Data (Preferred)\n\nEach variable is a column, each observation is a row. This \"tidy\" format provides maximum flexibility:\n\n```python\n# Long-form structure\n   subject  condition  measurement\n0        1    control         10.5\n1        1  treatment         12.3\n2        2    control          9.8\n3        2  treatment         13.1\n```\n\n**Advantages:**\n- Works with all seaborn functions\n- Easy to remap variables to visual properties\n- Supports arbitrary complexity\n- Natural for DataFrame operations\n\n### Wide-Form Data\n\nVariables are spread across columns. Useful for simple rectangular data:\n\n```python\n# Wide-form structure\n   control  treatment\n0     10.5       12.3\n1      9.8       13.1\n```\n\n**Use cases:**\n- Simple time series\n- Correlation matrices\n- Heatmaps\n- Quick plots of array data\n\n**Converting wide to long:**\n```python\ndf_long = df.melt(var_name='condition', value_name='measurement')\n```\n\n## Color Palettes\n\nSeaborn provides carefully designed color palettes for different data types:\n\n### Qualitative Palettes (Categorical Data)\n\nDistinguish categories through hue variation:\n- `\"deep\"` - Default, vivid colors\n- `\"muted\"` - Softer, less saturated\n- `\"pastel\"` - Light, desaturated\n- `\"bright\"` - Highly saturated\n- `\"dark\"` - Dark values\n- `\"colorblind\"` - Safe for color vision deficiency\n\n```python\nsns.set_palette(\"colorblind\")\nsns.color_palette(\"Set2\")\n```\n\n### Sequential Palettes (Ordered Data)\n\nShow progression from low to high values:\n- `\"rocket\"`, `\"mako\"` - Wide luminance range (good for heatmaps)\n- `\"flare\"`, `\"crest\"` - Restricted luminance (good for points\u002Flines)\n- `\"viridis\"`, `\"magma\"`, `\"plasma\"` - Matplotlib perceptually uniform\n\n```python\nsns.heatmap(data, cmap='rocket')\nsns.kdeplot(data=df, x='x', y='y', cmap='mako', fill=True)\n```\n\n### Diverging Palettes (Centered Data)\n\nEmphasize deviations from a midpoint:\n- `\"vlag\"` - Blue to red\n- `\"icefire\"` - Blue to orange\n- `\"coolwarm\"` - Cool to warm\n- `\"Spectral\"` - Rainbow diverging\n\n```python\nsns.heatmap(correlation_matrix, cmap='vlag', center=0)\n```\n\n### Custom Palettes\n\n```python\n# Create custom palette\ncustom = sns.color_palette(\"husl\", 8)\n\n# Light to dark gradient\npalette = sns.light_palette(\"seagreen\", as_cmap=True)\n\n# Diverging palette from hues\npalette = sns.diverging_palette(250, 10, as_cmap=True)\n```\n\n## Theming and Aesthetics\n\n### Set Theme\n\n`set_theme()` controls overall appearance:\n\n```python\n# Set complete theme\nsns.set_theme(style='whitegrid', palette='pastel', font='sans-serif')\n\n# Reset to defaults\nsns.set_theme()\n```\n\n### Styles\n\nControl background and grid appearance:\n- `\"darkgrid\"` - Gray background with white grid (default)\n- `\"whitegrid\"` - White background with gray grid\n- `\"dark\"` - Gray background, no grid\n- `\"white\"` - White background, no grid\n- `\"ticks\"` - White background with axis ticks\n\n```python\nsns.set_style(\"whitegrid\")\n\n# Remove spines\nsns.despine(left=False, bottom=False, offset=10, trim=True)\n\n# Temporary style\nwith sns.axes_style(\"white\"):\n    sns.scatterplot(data=df, x='x', y='y')\n```\n\n### Contexts\n\nScale elements for different use cases:\n- `\"paper\"` - Smallest (default)\n- `\"notebook\"` - Slightly larger\n- `\"talk\"` - Presentation slides\n- `\"poster\"` - Large format\n\n```python\nsns.set_context(\"talk\", font_scale=1.2)\n\n# Temporary context\nwith sns.plotting_context(\"poster\"):\n    sns.barplot(data=df, x='category', y='value')\n```\n\n## Best Practices\n\n### 1. Data Preparation\n\nAlways use well-structured DataFrames with meaningful column names:\n\n```python\n# Good: Named columns in DataFrame\ndf = pd.DataFrame({'bill': bills, 'tip': tips, 'day': days})\nsns.scatterplot(data=df, x='bill', y='tip', hue='day')\n\n# Avoid: Unnamed arrays\nsns.scatterplot(x=x_array, y=y_array)  # Loses axis labels\n```\n\n### 2. Choose the Right Plot Type\n\n**Continuous x, continuous y:** `scatterplot`, `lineplot`, `kdeplot`, `regplot`\n**Continuous x, categorical y:** `violinplot`, `boxplot`, `stripplot`, `swarmplot`\n**One continuous variable:** `histplot`, `kdeplot`, `ecdfplot`\n**Correlations\u002Fmatrices:** `heatmap`, `clustermap`\n**Pairwise relationships:** `pairplot`, `jointplot`\n\n### 3. Use Figure-Level Functions for Faceting\n\n```python\n# Instead of manual subplot creation\nsns.relplot(data=df, x='x', y='y', col='category', col_wrap=3)\n\n# Not: Creating subplots manually for simple faceting\n```\n\n### 4. Leverage Semantic Mappings\n\nUse `hue`, `size`, and `style` to encode additional dimensions:\n\n```python\nsns.scatterplot(data=df, x='x', y='y',\n                hue='category',      # Color by category\n                size='importance',    # Size by continuous variable\n                style='type')         # Marker style by type\n```\n\n### 5. Control Statistical Estimation\n\nMany functions compute statistics automatically. Understand and customize:\n\n```python\n# Lineplot computes mean and 95% CI by default\nsns.lineplot(data=df, x='time', y='value',\n             errorbar='sd')  # Use standard deviation instead\n\n# Barplot computes mean by default\nsns.barplot(data=df, x='category', y='value',\n            estimator='median',  # Use median instead\n            errorbar=('ci', 95))  # Bootstrapped CI\n```\n\n### 6. Combine with Matplotlib\n\nSeaborn integrates seamlessly with matplotlib for fine-tuning:\n\n```python\nax = sns.scatterplot(data=df, x='x', y='y')\nax.set(xlabel='Custom X Label', ylabel='Custom Y Label',\n       title='Custom Title')\nax.axhline(y=0, color='r', linestyle='--')\nplt.tight_layout()\n```\n\n### 7. Save High-Quality Figures\n\n```python\nfig = sns.relplot(data=df, x='x', y='y', col='group')\nfig.savefig('figure.png', dpi=300, bbox_inches='tight')\nfig.savefig('figure.pdf')  # Vector format for publications\n```\n\n## Common Patterns\n\n### Exploratory Data Analysis\n\n```python\n# Quick overview of all relationships\nsns.pairplot(data=df, hue='target', corner=True)\n\n# Distribution exploration\nsns.displot(data=df, x='variable', hue='group',\n            kind='kde', fill=True, col='category')\n\n# Correlation analysis\ncorr = df.corr()\nsns.heatmap(corr, annot=True, cmap='coolwarm', center=0)\n```\n\n### Publication-Quality Figures\n\n```python\nsns.set_theme(style='ticks', context='paper', font_scale=1.1)\n\ng = sns.catplot(data=df, x='treatment', y='response',\n                col='cell_line', kind='box', height=3, aspect=1.2)\ng.set_axis_labels('Treatment Condition', 'Response (μM)')\ng.set_titles('{col_name}')\nsns.despine(trim=True)\n\ng.savefig('figure.pdf', dpi=300, bbox_inches='tight')\n```\n\n### Complex Multi-Panel Figures\n\n```python\n# Using matplotlib subplots with seaborn\nfig, axes = plt.subplots(2, 2, figsize=(12, 10))\n\nsns.scatterplot(data=df, x='x1', y='y', hue='group', ax=axes[0, 0])\nsns.histplot(data=df, x='x1', hue='group', ax=axes[0, 1])\nsns.violinplot(data=df, x='group', y='y', ax=axes[1, 0])\nsns.heatmap(df.pivot_table(values='y', index='x1', columns='x2'),\n            ax=axes[1, 1], cmap='viridis')\n\nplt.tight_layout()\n```\n\n### Time Series with Confidence Bands\n\n```python\n# Lineplot automatically aggregates and shows CI\nsns.lineplot(data=timeseries, x='date', y='measurement',\n             hue='sensor', style='location', errorbar='sd')\n\n# For more control\ng = sns.relplot(data=timeseries, x='date', y='measurement',\n                col='location', hue='sensor', kind='line',\n                height=4, aspect=1.5, errorbar=('ci', 95))\ng.set_axis_labels('Date', 'Measurement (units)')\n```\n\n## Troubleshooting\n\n### Issue: Legend Outside Plot Area\n\nFigure-level functions place legends outside by default. To move inside:\n\n```python\ng = sns.relplot(data=df, x='x', y='y', hue='category')\ng._legend.set_bbox_to_anchor((0.9, 0.5))  # Adjust position\n```\n\n### Issue: Overlapping Labels\n\n```python\nplt.xticks(rotation=45, ha='right')\nplt.tight_layout()\n```\n\n### Issue: Figure Too Small\n\nFor figure-level functions:\n```python\nsns.relplot(data=df, x='x', y='y', height=6, aspect=1.5)\n```\n\nFor axes-level functions:\n```python\nfig, ax = plt.subplots(figsize=(10, 6))\nsns.scatterplot(data=df, x='x', y='y', ax=ax)\n```\n\n### Issue: Colors Not Distinct Enough\n\n```python\n# Use a different palette\nsns.set_palette(\"bright\")\n\n# Or specify number of colors\npalette = sns.color_palette(\"husl\", n_colors=len(df['category'].unique()))\nsns.scatterplot(data=df, x='x', y='y', hue='category', palette=palette)\n```\n\n### Issue: KDE Too Smooth or Jagged\n\n```python\n# Adjust bandwidth\nsns.kdeplot(data=df, x='x', bw_adjust=0.5)  # Less smooth\nsns.kdeplot(data=df, x='x', bw_adjust=2)    # More smooth\n```\n\n## Resources\n\nThis skill includes reference materials for deeper exploration:\n\n### references\u002F\n\n- `function_reference.md` - Comprehensive listing of all seaborn functions with parameters and examples\n- `objects_interface.md` - Detailed guide to the modern seaborn.objects API\n- `examples.md` - Common use cases and code patterns for different analysis scenarios\n\nLoad reference files as needed for detailed function signatures, advanced parameters, or specific examples.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,158,1306,"2026-05-16 13:38:07",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"其他","other","mdi-page-next-outline","其他类型Skill",5,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"职场发展","career","mdi-briefcase-outline","面试准备、简历优化、职业规划",4,575,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"c3462fd3-e2bc-4fe0-8756-33e00f77e374","1.0.0","seaborn.zip",7218,"uploads\u002Fskills\u002Fd50b4e47-332a-45e8-a7b0-212231427544\u002Fseaborn.zip","bd6d8eae797fb99cc04e4dc47d8053f07ac9ba32c16aa945140e4ef2f0170d56","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":20178}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]