Skip to content

Instantly share code, notes, and snippets.

@mols3131d
Last active May 10, 2024 14:05
Show Gist options
  • Save mols3131d/97373d9d6532cab6b238be89d08b1c2e to your computer and use it in GitHub Desktop.
Save mols3131d/97373d9d6532cab6b238be89d08b1c2e to your computer and use it in GitHub Desktop.
Plotly
import plotly.express as px
import plotly.graph_objs as go
from plotly.subplots import make_subplots
fig = make_subplots(
rows=1,
cols=3,
subplot_titles=("구독 유지 비율", "선호 난이도", "구독 유형"),
specs=[[{"type": "domain"}, {"type": "domain"}, {"type": "domain"}]],
)
df = train.groupby("target").count()
f = go.Pie(
labels=df.index,
values=df["user_id"],
text=df["user_id"],
name="구독 유지",
texttemplate="<b>%{label}</b><br>%{value}<br>(%{percent})",
textposition="auto",
hovertemplate="<b>%{label}</b><br>%{value}<br>(%{percent})",
)
fig.add_trace(f, row=1, col=1)
df = train.groupby("preferred_difficulty_level").count()
f = go.Pie(
labels=df.index,
values=df["user_id"],
text=df["user_id"],
name="선호 난이도",
texttemplate="<b>%{label}</b><br>%{value}<br>(%{percent})",
textposition="auto",
hovertemplate="<b>%{label}</b><br>%{value}<br>(%{percent})",
)
fig.add_trace(f, row=1, col=2)
df = train.groupby("subscription_type").count()
f = go.Pie(
labels=df.index,
values=df["user_id"],
text=df["user_id"],
name="구독 유형",
texttemplate="<b>%{label}</b><br>%{value}<br>(%{percent})",
textposition="auto",
hovertemplate="<b>%{label}</b><br>%{value}<br>(%{percent})",
)
fig.add_trace(f, row=1, col=3)
fig.update_traces(hole=0.3)
fig.update_layout(title_text="<b>범주형 비율</b>", showlegend=False)
fig.show()
def show_named_plotly_colours():
"""
function to display to user the colours to match plotly's named
css colours.
Reference:
#https://community.plotly.com/t/plotly-colours-list/11730/3
Returns:
plotly dataframe with cell colour to match named colour name
"""
s = """
aliceblue, antiquewhite, aqua, aquamarine, azure,
beige, bisque, black, blanchedalmond, blue,
blueviolet, brown, burlywood, cadetblue,
chartreuse, chocolate, coral, cornflowerblue,
cornsilk, crimson, cyan, darkblue, darkcyan,
darkgoldenrod, darkgray, darkgrey, darkgreen,
darkkhaki, darkmagenta, darkolivegreen, darkorange,
darkorchid, darkred, darksalmon, darkseagreen,
darkslateblue, darkslategray, darkslategrey,
darkturquoise, darkviolet, deeppink, deepskyblue,
dimgray, dimgrey, dodgerblue, firebrick,
floralwhite, forestgreen, fuchsia, gainsboro,
ghostwhite, gold, goldenrod, gray, grey, green,
greenyellow, honeydew, hotpink, indianred, indigo,
ivory, khaki, lavender, lavenderblush, lawngreen,
lemonchiffon, lightblue, lightcoral, lightcyan,
lightgoldenrodyellow, lightgray, lightgrey,
lightgreen, lightpink, lightsalmon, lightseagreen,
lightskyblue, lightslategray, lightslategrey,
lightsteelblue, lightyellow, lime, limegreen,
linen, magenta, maroon, mediumaquamarine,
mediumblue, mediumorchid, mediumpurple,
mediumseagreen, mediumslateblue, mediumspringgreen,
mediumturquoise, mediumvioletred, midnightblue,
mintcream, mistyrose, moccasin, navajowhite, navy,
oldlace, olive, olivedrab, orange, orangered,
orchid, palegoldenrod, palegreen, paleturquoise,
palevioletred, papayawhip, peachpuff, peru, pink,
plum, powderblue, purple, red, rosybrown,
royalblue, saddlebrown, salmon, sandybrown,
seagreen, seashell, sienna, silver, skyblue,
slateblue, slategray, slategrey, snow, springgreen,
steelblue, tan, teal, thistle, tomato, turquoise,
violet, wheat, white, whitesmoke, yellow,
yellowgreen
"""
li = s.split(",")
li = [l.replace("\n", "") for l in li]
li = [l.replace(" ", "") for l in li]
import pandas as pd
import plotly.graph_objects as go
df = pd.DataFrame.from_dict({"colour": li})
fig = go.Figure(
data=[
go.Table(
header=dict(
values=["Plotly Named CSS colours"],
line_color="black",
fill_color="white",
align="center",
font=dict(color="black", size=14),
),
cells=dict(
values=[df.colour],
line_color=[df.colour],
fill_color=[df.colour],
align="center",
font=dict(color="black", size=11),
),
)
]
)
fig.show()
show_named_plotly_colours()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment