第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Plotly:如何對(duì)不同的痕跡使用變換顏色?

Plotly:如何對(duì)不同的痕跡使用變換顏色?

慕工程0101907 2024-01-16 10:30:35
我正在使用 pandas 的數(shù)據(jù)繪制圖表。我有一個(gè)字典,其中鍵是日期,例如2020-10-26,值是 a pd.Dataframe,它有一個(gè)time列和 2 個(gè)數(shù)據(jù)列。.csv 格式的數(shù)據(jù)示例:for day, df in data.items():    day_name = datetime.datetime.strptime(day, "%Y-%m-%d").strftime("%A") # convert str to datetime, then to day    traces.append(go.Scatter(x=df["time"], y=df["SeriesA"], name=f"{day_name} SeriesA"))    traces.append(go.Scatter(x=df["time"], y=df["SeriesB"], name=f"{day_name} SeriesB"))有沒(méi)有辦法將每條線(xiàn)繪制為逐漸變化的色標(biāo)中的不同顏色?理想情況下,我希望周一的所有痕跡都是不同的紅色陰影,周二的每條痕跡都是不同的黃色陰影。我能想到的唯一方法是手動(dòng)將十六進(jìn)制值輸入到列表中,然后為一周中的每一天建立一個(gè)索引。然后在繪制軌跡時(shí)執(zhí)行以下操作:# If statement for every day of the weekif day_name == "Monday":    color = red_hex_values[monday_idx]    monday_idx += 1traces.append(go.Scatter(x=df["time"], y=df["SeriesA"], name=f"{day_name} SeriesA", color=color))但這似乎是一種非常混亂的方法。
查看完整描述

1 回答

?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

介紹

你的問(wèn)題可以利用更好的焦點(diǎn),因?yàn)樗鼘?shí)際上是兩個(gè)問(wèn)題:

  1. 如何制作自定義色標(biāo)

  2. 如何在繪圖中使用平日的變換顏色。

我冒昧地或多或少地專(zhuān)門(mén)關(guān)注后一部分。盡管我將簡(jiǎn)要介紹前者的一些選項(xiàng) - 如果您愿意,我們可以稍后再討論。

回答

這是一個(gè)有趣的問(wèn)題,我認(rèn)為我已經(jīng)通過(guò)對(duì)存儲(chǔ)在字典中的值的指定色階的循環(huán)迭代找到了一個(gè)可行的解決方案,daymap其中鍵是工作日名稱(chēng):

daymap?=?{'Monday':cycle(px.colors.sequential.Reds),?
??????????'Tuesday':cycle(px.colors.sequential.Greens),
?????????}

px.colors.sequential.Reds?并且px.colors.sequential.Greens是內(nèi)置的繪圖色標(biāo)。你特別要求黃色。但這是目前必須做的。

我已經(jīng)進(jìn)行了設(shè)置,以便weekday, color scale您設(shè)置的任何定義對(duì)都在圖中分配,并且您選擇不定義的所有工作日名稱(chēng)都被賦予您使用自定義函數(shù)指定的單個(gè)自定義顏色colfx()

def colfx(daymap, day_name, default_color):

? ? if day_name in daymap.keys():

? ? ? ? return next(daymap[day_name])

? ? else:

? ? ? ? return default_color

下面的完整代碼片段以及 60 天的隨機(jī)數(shù)據(jù)樣本將使用上述規(guī)范以及其他一些細(xì)節(jié)生成下面的圖 1。


地塊1

https://img1.sycdn.imooc.com/65a5ea7b0001c84106460273.jpg

圖 2 是通過(guò)在 中添加另一個(gè)鍵、值對(duì)daymap并將默認(rèn)顏色更改為colfx()來(lái)生成的'rgba(150,150,150, 0.2)'。我發(fā)現(xiàn)使用rgba顏色作為默認(rèn)顏色很實(shí)用,因?yàn)樯弦粋€(gè)術(shù)語(yǔ)0.2可以讓您輕松設(shè)置顏色的不透明度。

地塊2

https://img1.sycdn.imooc.com/65a5ea8a0001901406510268.jpg

完整代碼

import pandas as pd

import numpy as np

import plotly.graph_objects as go

import plotly.express as px

from itertools import cycle


# data

obs = 60

dates = pd.date_range(start='2020-01-01', periods=obs)

random = np.random.RandomState(0)

df = pd.DataFrame({'data': np.random.uniform(low=0, high=100, size=obs).tolist()}, index=dates)


# custom function to assign next color in a color sequence

# for each new day defined in the dict daymap

def colfx(daymap, day_name, default_color):

? ? if day_name in daymap.keys():

? ? ? ? return next(daymap[day_name])

? ? else:

? ? ? ? return default_color


# color specifications for weekday

daymap = {'Monday':cycle(px.colors.sequential.Reds),

? ? ? ? ? ?'Tuesday':cycle(px.colors.sequential.Greens),

? ? ? ? ? ?'Friday':cycle(px.colors.sequential.thermal)

? ? ? ? ?}

? ??

# container for weekday names added to the figure legend

# if the weekday names has ALREADY been added to the legend,

# then no further additions are made

fignames = []


fig=go.Figure()

for row in df.iterrows():

? ? day_name=row[0].strftime("%A")

? ? fignames = [d.name for d in fig.data]

? ? fig.add_bar(x=[row[0]],

? ? ? ? ? ? ? ? y=[row[1]['data']],

? ? ? ? ? ? ? ? marker_color=colfx(daymap=daymap, day_name = day_name, default_color='rgba(150,150,150, 0.2)'),

? ? ? ? ? ? ? ? name=day_name,

? ? ? ? ? ? ? ? legendgroup = day_name,

? ? ? ? ? ? ? ? showlegend = False if day_name in fignames else True

? ? ? ? ? ? ? ?)

? ??

fig.show()



查看完整回答
反對(duì) 回復(fù) 2024-01-16
  • 1 回答
  • 0 關(guān)注
  • 197 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)