質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1243閲覧

plotlyでy軸の表示方法を変更したい

mizuki-4833

総合スコア5

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/01/30 16:34

編集2023/01/30 19:48

実現したいこと

エラーの対処などではありません。plotlyのy軸の設定方法を工夫したいです。

Python

1import pandas as pd 2import numpy as np 3from datetime import timedelta 4import plotly.offline as offline 5import plotly.express as px 6import plotly.graph_objs as go 7 8td = datetime.timedelta(seconds=30) 9list=[['A',td*200], 10 ['B',td*1000], 11 ['C',td*500], 12 ['A',td*800], 13 ['C',td*10], 14 ['A',td*2000], 15 ['B',td*100], 16 ['B',td*40], 17 ['A',td*400], 18 ['A',td*20]] 19index = ["Row1", "Row2", "Row3", "Row4", "Row5"] 20columns =["Col1", "Col2"] 21df = pd.DataFrame(data=list).rename(columns={0:'col1',1:'col2'}) 22 23data = [go.Violin(y= df.query('col1=="A"')['col2'], 24 box_visible=True, points='all', name = "A"), 25 go.Violin(y= df.query('col1=="B"')['col2'], 26 box_visible=True, points='all', name = "B"), 27 go.Violin(y= df.query('col1=="C"')['col2'], 28 box_visible=True, points='all', name = "C")] 29layout = go.Layout( 30 xaxis = {'title' : 'x'}, 31 yaxis = {'title' : 'y'}, 32 legend= {'x':1, 'y':0.1}, 33 height=700) 34offline.iplot(go.Figure(data = data, layout = layout))

これによって表示されるグラフはバイオリンプロットとして適切に表示されます↓
イメージ説明

ただ、y軸部分を見ると20T,40Tと表示されています。
これをT単位ではなく、1日や1時間単位、応用として2時間単位などを表示する方法を教えてほしいです!
yaxis部分をdictなどで分割して複雑な処理を書いていくのかなと思っていたのですが思いつきませんでした。
拙い文章ですいません!回答よろしくお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

How do I display a timedelta in the format HH:MM:SS on my Plotly Express line chart's axis?などを読む限りtimedeltaのまま意図した単位で描画するのは意外と難しそうです。
list = [[e[0], e[1].total_seconds()/3600] for e in list]といった感じで元データから単位変換するほうが簡単かと思います。

イメージ説明

投稿2023/01/31 01:48

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mizuki-4833

2023/02/02 03:54

元データに対してのアプローチの方が効率が良いのですね。 わかりやすく説明していただきありがとうございました😌
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問