In [1]:
import IPython.core.display as di

# This line will hide code by default when the notebook is exported as HTML
di.display_html('<script>jQuery(function() {if (jQuery("body.notebook_app").length == 0) { jQuery(".input_area").toggle(); jQuery(".prompt").toggle();}});</script>', raw=True)

# This line will add a button to toggle visibility of code blocks, for use with the HTML export version
di.display_html('''<button onclick="jQuery('.input_area').toggle(); jQuery('.prompt').toggle();">Toggle code</button>''', raw=True)
In [2]:
db_file = 'sqlite:///1512249759.sqlite'
%load_ext sql
%sql sqlite:///1512170736.sqlite
None
In [3]:
%%javascript
IPython.OutputArea.auto_scroll_threshold = 9999;
In [4]:
from IPython.core.display import HTML
import pandas

def query(sql, params=None, check=True):
    "Run a query and return it as a Pandas dataframe"
    df = pandas.read_sql(sql, con=db_file, params=params)
    if check and 'Percent' in df:
        assert percent_ok(df)
    return df

def percent_ok(df):
    "Sanity check that percentages sum to 100"
    return abs(df['Percent'].sum() - 100.0) < 1

# Style for tables
def mystyle(df):
    return (df.style
        .format({'Percent': '{:.2f}%'})
        .background_gradient(cmap=cmap, subset=['Percent',])
        .applymap(lambda x: 'font-weight: bold' if x in keystones else ''))

# Construct a palette that's sorta like coolwarm but not as dark, so black text shows up
import seaborn as sns
cmap = sns.diverging_palette(240, 20, s=50, l=70, as_cmap=True)

# Normalization constant for all picks; handy for later
df = query("select v from totals where k='All'")
count_all = df.iloc[0]['v']

# Construct some lists of constants, useful for display
df = query("select rune from types where slot = 'Keystone'")
keystones = tuple(df['rune'])
df = query("select distinct(path) as p from types")
paths = tuple(df['p'])
all_roles = ('Top', 'Jungle', 'Middle', 'ADC', 'Support')

Popularity of runes in League of Legends preseason patch 7.23

A study of ~12 million Platinum+ ranked games in the week of Nov 25 - Dec 2 2017. I took a look at how often every rune was picked and then broke down the data by role and by rune path.

In general there's significant diversity in the 2018 rune system. There's also some runes that are clearly much more favored than others.

Keystones

  • Resolve and Inspiration (tank and utility) are significantly less popular paths than the DPS paths.
  • Sorcery is the most popular keystone path, people who take it take either Summon Aery or Arcane Comet.
  • Precision is the next most popular; pretty much everyone takes Press the Attack.
  • Domination is third and is most common for Junglers. Electrocute is by far the common choice.
  • Resolve is not nearly as common. Folks who take it take Aftershock 1.5x as much as Grasp of the Undying.
  • Inspiration is the least common primary path. Most everyone takes it for Kleptomancy.
  • The top 3 keystones account for 56% of all keystone choices. The bottom 3 are taken only 2% of the time.

Lesser runes

  • Triumph is the single most popular rune in the game, followed by Coup de Grace.
  • Scorch is very popular, 2x as its late-game alternative Gathering Storm, Pretty much no one takes Waterwalking. Those who do tend to be junglers.
  • Inspiration is the least popular path, it's most common for supports. Cosmic Insight is the most popular reason to take it. Magical Footwear, Future's Market, and Biscuit Delivery are also notably popular.
  • Almost no one takes Minion Dematerializer. Of those who do, Lux is the primary user.

Raw data comes from Lolalytics. Crunched and processed by Nelson Minar <nelson@monkey.org>. I'm looking for someone to work with to turn this into a nicely formatted article / infographic or else a regular feature on a site. Email me if you are interested.

Popularity of paths across all roles

In [5]:
df = query(f'''
select
    types.path as Path,
    100*sum(p+s)/? as Percent
from picks left join types on picks.rune = types.rune
group by types.path
order by Percent desc;
''', params=(count_all,))

display(mystyle(df))
Path Percent
0 Sorcery 29.60%
1 Precision 24.73%
2 Domination 22.02%
3 Resolve 13.32%
4 Inspiration 10.33%

Popularity of paths per role

In [6]:
q = '''
select
    types.path as Path,
    sum(p) as P,
    sum(s) as S,
    sum(p+s) as Total
from 
    picks
    left join types on picks.rune = types.rune
where picks.role = ?
group by types.path
order by types.path
'''

def get_totals_for_role(role):
    df = query(q, (role,))
    df["%s P" % role] = df['P'] * 100.0 / df['P'].sum()
    df["%s S" % role] = df['S'] * 100.0 / df['S'].sum()
    df["%s B" % role] = df['Total'] * 100.0 / df['Total'].sum()
    del df['Total'], df['P'], df['S']
    return df

df = get_totals_for_role(all_roles[0])
for role in all_roles[1:]:
    df2 = get_totals_for_role(role)
    df["%s B" % role] = df2["%s B" % role]
    df["%s P" % role] = df2["%s P" % role]
    df["%s S" % role] = df2["%s S" % role]

cols = ["%s B" % r for r in all_roles]
display(HTML('<h3>Primary and Secondary Paths</h3>'))
display(df[['Path',] + cols].fillna(0).style
        .format({k: '{:.2f}%' for k in cols})
        .background_gradient(cmap=cmap, subset=cols)
       )

cols = ["%s P" % r for r in all_roles]
display(HTML('<h3>Primary Path</h3>'))
display(df[['Path',] + cols].fillna(0).style
        .format({k: '{:.2f}%' for k in cols})
        .background_gradient(cmap=cmap, subset=cols)
       )

cols = ["%s S" % r for r in all_roles]
display(HTML('<h3>Secondary Path</h3>'))
display(df[['Path',] + cols].fillna(0).style
        .format({k: '{:.2f}%' for k in cols})
        .background_gradient(cmap=cmap, subset=cols)
       )

Primary and Secondary Paths

Path Top B Jungle B Middle B ADC B Support B
0 Domination 17.78% 45.77% 27.24% 15.24% 5.94%
1 Inspiration 9.30% 1.53% 10.43% 8.41% 21.53%
2 Precision 24.15% 30.25% 14.05% 51.65% 1.88%
3 Resolve 22.51% 10.57% 0.56% 0.30% 33.68%
4 Sorcery 26.26% 11.88% 47.71% 24.39% 36.97%

Primary Path

Path Top P Jungle P Middle P ADC P Support P
0 Domination 14.11% 58.51% 28.12% 0.75% 1.50%
1 Inspiration 8.61% 0.37% 3.12% 10.42% 7.06%
2 Precision 25.09% 26.02% 7.38% 67.60% 0.38%
3 Resolve 28.38% 13.08% 0.34% 0.01% 44.03%
4 Sorcery 23.82% 2.02% 61.05% 21.23% 47.03%

Secondary Path

Path Top S Jungle S Middle S ADC S Support S
0 Domination 25.26% 19.70% 25.43% 44.62% 14.92%
1 Inspiration 10.71% 3.89% 25.41% 4.34% 50.77%
2 Precision 22.24% 38.91% 27.72% 19.31% 4.92%
3 Resolve 10.56% 5.45% 1.03% 0.90% 12.76%
4 Sorcery 31.23% 32.05% 20.40% 30.82% 16.63%

Popularity of runes across all roles

Keystones

In [7]:
df = query('''
select 
    types.path as Path, 
    picks.rune as Rune, 
    100*6*sum(p) / totals.v as Percent
from 
    picks left join types on picks.rune = types.rune
    left join totals on totals.k = 'All'
where types.slot == 'Keystone'
group by picks.rune 
order by Percent desc;
''')

display(mystyle(df))
Path Rune Percent
0 Precision Press the Attack 21.50%
1 Domination Electrocute 17.38%
2 Sorcery Summon Aery 16.77%
3 Sorcery Arcane Comet 13.33%
4 Resolve Aftershock 8.46%
5 Resolve Grasp of the Undying 5.98%
6 Inspiration Kleptomancy 4.90%
7 Precision Lethal Tempo 2.94%
8 Resolve Guardian 2.52%
9 Domination Dark Harvest 1.71%
10 Precision Fleet Footwork 1.57%
11 Sorcery Phase Rush 1.32%
12 Domination Predator 0.98%
13 Inspiration Unsealed Spellbook 0.64%
14 Inspiration Glacial Augment 0.53%

Non-keystones

In [8]:
df = query('''
select 
    types.path as Path, 
    picks.rune as Rune, 
    100*6*sum(p+s) / (5*totals.v) as Percent
from 
    picks left join types on picks.rune = types.rune
    left join totals on totals.k = 'All'
where types.slot != 'Keystone'
group by picks.rune 
order by Percent desc;
''')
display(mystyle(df))
Path Rune Percent
0 Precision Triumph 8.56%
1 Precision Coup de Grace 7.79%
2 Sorcery Scorch 6.35%
3 Sorcery Manaflow Band 4.70%
4 Domination Sudden Impact 4.66%
5 Precision Legend: Alacrity 4.66%
6 Domination Eyeball Collection 4.37%
7 Sorcery Transcendence 4.30%
8 Domination Ravenous Hunter 4.23%
9 Sorcery Celerity 4.15%
10 Sorcery The Ultimate Hat 3.50%
11 Inspiration Cosmic Insight 3.35%
12 Sorcery Gathering Storm 3.12%
13 Domination Relentless Hunter 2.90%
14 Resolve Conditioning 2.22%
15 Domination Cheap Shot 2.01%
16 Resolve Font of Life 2.00%
17 Domination Taste of Blood 1.87%
18 Inspiration Magical Footwear 1.84%
19 Inspiration Future's Market 1.84%
20 Inspiration Biscuit Delivery 1.84%
21 Resolve Second Wind 1.80%
22 Resolve Iron Skin 1.78%
23 Resolve Overgrowth 1.73%
24 Domination Zombie Ward 1.50%
25 Sorcery Absolute Focus 1.39%
26 Inspiration Perfect Timing 1.37%
27 Resolve Unflinching 1.24%
28 Sorcery Nullifying Orb 1.16%
29 Precision Legend: Bloodline 1.06%
30 Resolve Revitalize 0.95%
31 Precision Cut Down 0.76%
32 Resolve Demolish 0.69%
33 Precision Legend: Tenacity 0.61%
34 Sorcery Waterwalking 0.57%
35 Precision Last Stand 0.51%
36 Domination Ghost Poro 0.49%
37 Inspiration Celestial Body 0.47%
38 Domination Ingenious Hunter 0.38%
39 Precision Overheal 0.34%
40 Inspiration Approach Velocity 0.26%
41 Resolve Mirror Shell 0.19%
42 Inspiration Hextech Flashtraption 0.18%
43 Precision Presence of Mind 0.18%
44 Inspiration Minion Dematerializer 0.02%

Who takes Minion Dematerializer?

In [9]:
rune_query = '''
select
    champion as Champion,
    sum(p+s) as Total
from picks
where rune = ?
group by champion
order by Total desc
'''
df = query(rune_query, ('Minion Dematerializer',))
df['Percent'] =  100 * df['Total'] / df['Total'].sum()
del df['Total']
display(mystyle(df))
Champion Percent
0 Lux 32.80%
1 Ekko 13.46%
2 Gangplank 10.87%
3 Sion 9.25%
4 Shen 8.09%
5 Ziggs 7.52%
6 TwistedFate 7.13%
7 Singed 6.42%
8 Zilean 1.28%
9 AurelionSol 1.09%
10 Fiddlesticks 1.01%
11 Udyr 0.70%
12 Zyra 0.28%
13 Mordekaiser 0.10%

Top 10 Champions who take Sudden Impact

This rune is very popular but only useful on champions with certain mobility abilities.

In [10]:
rune_query = '''
select
    champion as Champion,
    sum(p+s) as Total
from picks
where rune = ?
group by champion
order by Total desc
limit 10
'''
df = query(rune_query, ('Sudden Impact',))
df['Percent'] =  100 * df['Total'] / df['Total'].sum()
del df['Total']
display(mystyle(df))
Champion Percent
0 LeeSin 17.92%
1 JarvanIV 12.82%
2 Vayne 11.45%
3 Kayn 10.16%
4 Zed 10.02%
5 Katarina 9.64%
6 Rengar 7.52%
7 Yasuo 7.25%
8 XinZhao 7.11%
9 Riven 6.10%

Popularity of runes by path

In [11]:
for path in paths:
    display(HTML(f'<h3>{path}</h3>'))
    df = query('''
    select 
        picks.rune as Rune,
        100*sum(p+s) / totals.v as Percent
    from 
        picks left join types on picks.rune = types.rune
        left join totals on totals.k = types.path
    where types.path = ?
    group by picks.rune 
    order by Path, Percent desc;
    ''', (path,))
    display(mystyle(df))

Precision

Rune Percent
0 Triumph 28.84%
1 Coup de Grace 26.26%
2 Legend: Alacrity 15.69%
3 Press the Attack 14.49%
4 Legend: Bloodline 3.56%
5 Cut Down 2.57%
6 Legend: Tenacity 2.07%
7 Lethal Tempo 1.98%
8 Last Stand 1.73%
9 Overheal 1.16%
10 Fleet Footwork 1.06%
11 Presence of Mind 0.59%

Domination

Rune Percent
0 Sudden Impact 17.62%
1 Eyeball Collection 16.54%
2 Ravenous Hunter 16.02%
3 Electrocute 13.15%
4 Relentless Hunter 10.99%
5 Cheap Shot 7.59%
6 Taste of Blood 7.08%
7 Zombie Ward 5.69%
8 Ghost Poro 1.84%
9 Ingenious Hunter 1.42%
10 Dark Harvest 1.30%
11 Predator 0.74%

Sorcery

Rune Percent
0 Scorch 17.87%
1 Manaflow Band 13.23%
2 Transcendence 12.10%
3 Celerity 11.69%
4 The Ultimate Hat 9.86%
5 Summon Aery 9.44%
6 Gathering Storm 8.77%
7 Arcane Comet 7.50%
8 Absolute Focus 3.90%
9 Nullifying Orb 3.27%
10 Waterwalking 1.62%
11 Phase Rush 0.74%

Resolve

Rune Percent
0 Conditioning 13.90%
1 Font of Life 12.51%
2 Second Wind 11.23%
3 Iron Skin 11.12%
4 Overgrowth 10.83%
5 Aftershock 10.59%
6 Unflinching 7.75%
7 Grasp of the Undying 7.48%
8 Revitalize 5.94%
9 Demolish 4.33%
10 Guardian 3.16%
11 Mirror Shell 1.16%

Inspiration

Rune Percent
0 Cosmic Insight 27.04%
1 Magical Footwear 14.85%
2 Future's Market 14.84%
3 Biscuit Delivery 14.82%
4 Perfect Timing 11.07%
5 Kleptomancy 7.92%
6 Celestial Body 3.80%
7 Approach Velocity 2.12%
8 Hextech Flashtraption 1.47%
9 Unsealed Spellbook 1.04%
10 Glacial Augment 0.86%
11 Minion Dematerializer 0.18%

Popularity of runes by role

In [12]:
all_roles = ('Top', 'Jungle', 'Middle', 'ADC', 'Support')
q = '''
select 
    picks.rune as Rune,
    types.path as Path,
    100*sum(p+s) / totals.v as Percent
from 
    picks left join types on picks.rune = types.rune
    left join totals on totals.k = picks.role
where picks.role = ?
group by picks.rune 
order by Path, types.slot desc, Rune;
'''
role = all_roles[0]
df = query(q, (role,))
df[role] = df['Percent']
del df['Percent']
for role in all_roles[1:]:
    df2 = query(q, (role,))
    df[role] = df2['Percent']
    

display(df.fillna(0).style
        .format({k: '{:.2f}%' for k in all_roles})
        .background_gradient(cmap=cmap, subset=list(all_roles))
        .applymap(lambda x: 'font-weight: bold' if x in keystones else '')
       )
Rune Path Top Jungle Middle ADC Support
0 Dark Harvest Domination 0.04% 1.43% 0.02% 0.03% 0.28%
1 Electrocute Domination 2.30% 7.58% 4.69% 0.11% 0.00%
2 Predator Domination 0.05% 0.79% 0.03% 0.00% 0.38%
3 Ingenious Hunter Domination 0.23% 0.38% 0.59% 0.02% 0.31%
4 Ravenous Hunter Domination 4.30% 5.25% 4.68% 3.25% 0.95%
5 Relentless Hunter Domination 1.03% 6.69% 2.55% 1.20% 0.74%
6 Eyeball Collection Domination 2.41% 7.41% 4.99% 2.92% 0.14%
7 Ghost Poro Domination 0.44% 0.95% 0.46% 0.09% 1.26%
8 Zombie Ward Domination 0.75% 2.53% 1.31% 0.54% 1.49%
9 Cheap Shot Domination 1.27% 2.20% 2.06% 1.37% 0.17%
10 Sudden Impact Domination 3.34% 9.67% 4.54% 2.15% 0.21%
11 Taste of Blood Domination 1.65% 0.88% 1.32% 3.55% 0.24%
12 Glacial Augment Inspiration 0.14% 0.03% 0.04% 0.00% 0.67%
13 Kleptomancy Inspiration 1.18% 0.02% 0.37% 1.74% 0.27%
14 Unsealed Spellbook Inspiration 0.13% 0.02% 0.12% 0.00% 0.58%
15 Approach Velocity Inspiration 0.28% 0.12% 0.08% 0.05% 1.46%
16 Celestial Body Inspiration 0.34% 0.07% 0.06% 0.04% 6.10%
17 Cosmic Insight Inspiration 2.15% 0.41% 3.36% 1.86% 3.64%
18 Future's Market Inspiration 1.20% 0.22% 1.14% 1.39% 3.03%
19 Magical Footwear Inspiration 1.46% 0.38% 1.76% 1.01% 3.87%
20 Minion Dematerializer Inspiration 0.03% 0.05% 0.06% 0.00% 0.65%
21 Biscuit Delivery Inspiration 1.02% 0.08% 0.90% 1.70% 1.03%
22 Hextech Flashtraption Inspiration 0.02% 0.14% 0.01% 0.00% 0.00%
23 Perfect Timing Inspiration 1.35% 0.10% 2.55% 0.62% 0.07%
24 Fleet Footwork Precision 0.13% 0.55% 0.19% 0.84% 0.65%
25 Lethal Tempo Precision 0.32% 3.70% 0.12% 1.39% 0.02%
26 Press the Attack Precision 3.74% 8.93% 0.93% 9.09% 0.00%
27 Coup de Grace Precision 5.69% 0.35% 5.14% 11.80% 0.04%
28 Cut Down Precision 0.52% 0.54% 0.21% 1.95% 0.00%
29 Last Stand Precision 0.93% 4.71% 0.20% 0.48% 0.24%
30 Legend: Alacrity Precision 3.75% 0.53% 1.40% 9.17% 0.00%
31 Legend: Bloodline Precision 0.74% 0.94% 0.21% 2.77% 0.04%
32 Legend: Tenacity Precision 1.19% 0.24% 0.10% 0.16% 0.82%
33 Overheal Precision 0.28% 0.00% 0.08% 0.79% 4.45%
34 Presence of Mind Precision 0.11% 9.66% 0.56% 0.02% 0.85%
35 Triumph Precision 6.75% 1.77% 4.93% 13.19% 2.04%
36 Aftershock Resolve 0.91% 0.36% 0.03% 0.00% 2.99%
37 Grasp of the Undying Resolve 3.85% 0.06% 0.02% 0.00% 2.81%
38 Guardian Resolve 0.00% 1.71% 0.00% 0.00% 3.58%
39 Overgrowth Resolve 2.62% 0.33% 0.05% 0.00% 4.10%
40 Revitalize Resolve 0.81% 0.83% 0.03% 0.18% 3.79%
41 Second Wind Resolve 2.85% 2.05% 0.13% 0.00% 0.28%
42 Conditioning Resolve 3.24% 0.95% 0.06% 0.12% 0.45%
43 Iron Skin Resolve 2.59% 0.02% 0.05% 0.00% 6.17%
44 Mirror Shell Resolve 0.39% 0.21% 0.10% 0.00% 2.18%
45 Demolish Resolve 2.24% 1.23% 0.04% 0.00% 2.11%
46 Font of Life Resolve 1.00% 1.04% 0.02% 2.44% 0.01%
47 Unflinching Resolve 2.00% 0.16% 0.03% 0.00% 5.73%
48 Arcane Comet Sorcery 1.08% 0.06% 5.15% 1.11% 1.99%
49 Phase Rush Sorcery 0.48% 0.12% 0.56% 3.70% 6.84%
50 Summon Aery Sorcery 2.43% 1.15% 4.53% 4.34% 0.71%
51 Gathering Storm Sorcery 1.87% 1.62% 4.09% 0.00% 1.12%
52 Scorch Sorcery 5.37% 1.28% 8.11% 1.30% 3.16%
53 Waterwalking Sorcery 0.09% 0.55% 0.39% 4.87% 5.05%
54 Absolute Focus Sorcery 0.98% 2.80% 1.77% 0.99% 5.96%
55 Celerity Sorcery 2.84% 1.31% 3.49% 4.18% 1.00%
56 Transcendence Sorcery 3.41% 0.37% 7.19% 0.47% 3.29%
57 Manaflow Band Sorcery 2.59% 0.56% 6.21% 0.98% 0.00%
58 Nullifying Orb Sorcery 1.32% 1.90% 1.51% 0.00% 0.00%
59 The Ultimate Hat Sorcery 3.81% 0.00% 4.71% 0.00% 0.00%

Popularity of runes by role, per path

In [13]:
all_roles = ('Top', 'Jungle', 'Middle', 'ADC', 'Support')
q = '''
select 
    picks.rune as Rune,
    sum(p+s) as Total
from 
    picks
    left join types on picks.rune = types.rune
where picks.role = ? and types.path = ?
group by picks.rune 
order by types.slot desc, Rune;
'''

def get_totals_for_path_and_role(path, role):
    df = query(q, (role, path))
    all_total = df['Total'].sum()
    df[role] = df['Total'] * 100.0 / all_total
    del df['Total']
    return df

for path in paths:
    df = get_totals_for_path_and_role(path, all_roles[0])
    for role in all_roles[1:]:
        df2 = get_totals_for_path_and_role(path, role)
        df[role] = df2[role]

    display(HTML(f'<h3>{path}</h3>'))
    display(df.fillna(0).style
            .format({k: '{:.2f}%' for k in all_roles})
            .background_gradient(cmap=cmap, subset=list(all_roles))
            .applymap(lambda x: 'font-weight: bold' if x in keystones else '')
           )

Precision

Rune Top Jungle Middle ADC Support
0 Fleet Footwork 0.53% 0.33% 1.32% 1.62% 0.10%
1 Lethal Tempo 1.32% 1.81% 0.84% 2.70% 3.53%
2 Press the Attack 15.50% 12.23% 6.62% 17.59% 34.69%
3 Coup de Grace 23.56% 29.52% 36.57% 22.85% 0.94%
4 Cut Down 2.14% 1.17% 1.53% 3.78% 0.19%
5 Last Stand 3.87% 1.77% 1.42% 0.93% 1.99%
6 Legend: Alacrity 15.52% 15.58% 9.94% 17.74% 0.05%
7 Legend: Bloodline 3.05% 1.74% 1.46% 5.36% 12.72%
8 Legend: Tenacity 4.93% 3.09% 0.72% 0.31% 0.05%
9 Overheal 1.16% 0.79% 0.55% 1.54% 2.03%
10 Presence of Mind 0.47% 0.01% 3.96% 0.04% 43.71%
11 Triumph 27.96% 31.94% 35.07% 25.54% 0.00%

Domination

Rune Top Jungle Middle ADC Support
0 Dark Harvest 0.21% 3.13% 0.07% 0.17% 4.72%
1 Electrocute 12.91% 16.57% 17.23% 0.74% 0.01%
2 Predator 0.27% 1.73% 0.09% 0.00% 6.36%
3 Ingenious Hunter 1.27% 0.82% 2.16% 0.12% 5.27%
4 Ravenous Hunter 24.15% 11.47% 17.19% 21.32% 16.03%
5 Relentless Hunter 5.79% 14.62% 9.34% 7.89% 12.41%
6 Eyeball Collection 13.53% 16.20% 18.31% 19.19% 2.43%
7 Ghost Poro 2.45% 2.07% 1.70% 0.62% 21.25%
8 Zombie Ward 4.20% 5.53% 4.81% 3.52% 25.14%
9 Cheap Shot 7.17% 4.82% 7.57% 8.98% 2.85%
10 Sudden Impact 18.78% 21.13% 16.68% 14.13% 3.52%
11 Taste of Blood 9.27% 1.92% 4.85% 23.31% 0.00%

Sorcery

Rune Top Jungle Middle ADC Support
0 Arcane Comet 4.11% 1.33% 10.79% 10.02% 5.70%
1 Phase Rush 1.81% 0.53% 1.16% 0.01% 0.04%
2 Summon Aery 9.24% 1.03% 9.49% 4.56% 15.51%
3 Gathering Storm 7.10% 9.68% 8.57% 15.18% 5.38%
4 Scorch 20.46% 13.65% 17.00% 17.81% 18.50%
5 Waterwalking 0.36% 10.73% 0.82% 0.01% 1.92%
6 Absolute Focus 3.73% 4.60% 3.71% 5.35% 3.03%
7 Celerity 10.80% 23.54% 7.31% 19.97% 8.54%
8 Transcendence 12.97% 11.06% 15.08% 4.06% 13.67%
9 Manaflow Band 9.85% 3.12% 13.02% 17.13% 16.13%
10 Nullifying Orb 5.03% 4.74% 3.16% 1.91% 2.69%
11 The Ultimate Hat 14.53% 15.98% 9.88% 4.01% 8.90%

Resolve

Rune Top Jungle Middle ADC Support
0 Aftershock 4.02% 16.79% 6.05% 0.15% 13.22%
1 Grasp of the Undying 17.12% 3.44% 3.85% 0.21% 2.51%
2 Guardian 0.01% 0.61% 0.06% 0.44% 6.04%
3 Overgrowth 11.65% 16.14% 8.90% 0.24% 8.87%
4 Revitalize 3.61% 3.14% 5.26% 58.19% 8.35%
5 Second Wind 12.65% 7.87% 22.96% 0.30% 10.64%
6 Conditioning 14.39% 19.37% 9.87% 39.60% 12.17%
7 Iron Skin 11.53% 9.02% 8.61% 0.38% 11.24%
8 Mirror Shell 1.73% 0.14% 17.57% 0.15% 0.82%
9 Demolish 9.94% 2.02% 6.92% 0.32% 1.33%
10 Font of Life 4.43% 11.60% 4.17% 0.00% 18.32%
11 Unflinching 8.90% 9.88% 5.79% 0.00% 6.48%

Inspiration

Rune Top Jungle Middle ADC Support
0 Glacial Augment 1.50% 1.79% 0.38% 0.02% 1.12%
1 Kleptomancy 12.68% 1.18% 3.52% 20.74% 3.11%
2 Unsealed Spellbook 1.44% 1.31% 1.12% 0.02% 1.24%
3 Approach Velocity 2.98% 8.10% 0.73% 0.55% 2.69%
4 Celestial Body 3.69% 4.69% 0.58% 0.44% 6.76%
5 Cosmic Insight 23.09% 26.83% 32.17% 22.07% 28.31%
6 Future's Market 12.86% 14.10% 10.91% 16.51% 16.93%
7 Magical Footwear 15.70% 24.73% 16.83% 12.05% 14.05%
8 Minion Dematerializer 0.36% 2.98% 0.56% 0.01% 18.00%
9 Biscuit Delivery 10.91% 5.04% 8.64% 20.21% 3.00%
10 Hextech Flashtraption 0.24% 9.23% 0.13% 0.01% 4.78%
11 Perfect Timing 14.56% 0.00% 24.43% 7.38% 0.00%