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

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

pythonplotly:不固定數(shù)量的痕跡

pythonplotly:不固定數(shù)量的痕跡

一只斗牛犬 2023-07-27 10:13:00
我的代碼從 .xlsx 文件讀取數(shù)據(jù),并使用plotly 繪制氣泡圖。 氣泡圖 當(dāng)我知道需要繪制多少條跡線(xiàn)時(shí),任務(wù)就很容易了。然而,當(dāng)由于行數(shù)是可變的而跟蹤數(shù)不固定時(shí),我感到困惑。       1991  1992  1993  1994  1995  1996  1997US       10    14    16    18    20    42    64JAPAN   100    30    70    85    30    42    64CN       50    22    30    65    70    66    60這是我未完成的代碼:# Version 2 could read data from .xlsx file.import plotly as pyimport plotly.graph_objs as goimport openpyxlwb = openpyxl.load_workbook(('grape output.xlsx'))     sheet = wb['Sheet1']       row_max = sheet.max_rowcol_max = sheet.max_columnl=[]for row_n in range(row_max-1):    l.append([])    for col_n in range(col_max-1):        l[row_n].append(sheet.cell(row=row_n+2, column=col_n+2).value)trace0 = go.Scatter(    x=[1991, 1992, 1993, 1994, 1995, 1996, 1997],    y=['US', 'US', 'US', 'US', 'US', 'US', 'US'],    mode='markers+text',    marker=dict(        color='rgb(150,204,90)',        size= l[0],        showscale = False,        ),    text=list(map(str, l[0])),         textposition='middle center',   )trace1 = go.Scatter(    x=[1991, 1992, 1993, 1994, 1995, 1996, 1997],    y=['JAPAN', 'JAPAN', 'JAPAN', 'JAPAN', 'JAPAN', 'JAPAN', 'JAPAN'],    mode='markers+text',    marker=dict(        color='rgb(255, 130, 71)',        size=l[1],        showscale=False,    ),    text=list(map(str,l[1])),    textposition='middle center',)trace2 = go.Scatter(    x=[1991, 1992, 1993, 1994, 1995, 1996, 1997],    y=['CN', 'CN', 'CN', 'CN', 'CN', 'CN', 'CN'],    mode='markers+text',    marker=dict(        color='rgb(255, 193, 37)',        size=l[2],        showscale=False,    ),    text=list(map(str,l[2])),    textposition='middle center',)你能教我怎么畫(huà)它們嗎?謝謝
查看完整描述

3 回答

?
暮色呼如

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

我認(rèn)為有一種更靈活的方法可以使用它,plotly.express特別是如果您不想定義顏色。


這個(gè)想法是正確地轉(zhuǎn)換數(shù)據(jù)。


數(shù)據(jù)

import pandas as pd

df = pd.DataFrame({1991:[10,100,50], 1992:[14,30,22], 1993:[16,70,30], 1994:[18,85,65], 1995:[20,30,70], 1996:[42,42,66], 1997:[64,64,60]})

df.index = ['US','JAPAN','CN']

df = df.T.unstack()\

? ? ? .reset_index()\

? ? ? .rename(columns={"level_0": "country",

? ? ? ? ? ? ? ? ? ? ? ?"level_1": "year",

? ? ? ? ? ? ? ? ? ? ? ?0: "n"})

print(df)

? ?country? year? ? n

0? ? ? ?US? 1991? ?10

1? ? ? ?US? 1992? ?14

2? ? ? ?US? 1993? ?16

3? ? ? ?US? 1994? ?18

4? ? ? ?US? 1995? ?20

5? ? ? ?US? 1996? ?42

6? ? ? ?US? 1997? ?64

7? ? JAPAN? 1991? 100

8? ? JAPAN? 1992? ?30

9? ? JAPAN? 1993? ?70

10? ?JAPAN? 1994? ?85

11? ?JAPAN? 1995? ?30

12? ?JAPAN? 1996? ?42

13? ?JAPAN? 1997? ?64

14? ? ? CN? 1991? ?50

15? ? ? CN? 1992? ?22

16? ? ? CN? 1993? ?30

17? ? ? CN? 1994? ?65

18? ? ? CN? 1995? ?70

19? ? ? CN? 1996? ?66

20? ? ? CN? 1997? ?60

使用plotly.express

現(xiàn)在您的數(shù)據(jù)是長(zhǎng)格式,您可以使用plotly.express如下


import plotly.express as px

fig = px.scatter(df,

? ? ? ? ? ? ? ? ?x="year",

? ? ? ? ? ? ? ? ?y="country",

? ? ? ? ? ? ? ? ?size="n",

? ? ? ? ? ? ? ? ?color="country",

? ? ? ? ? ? ? ? ?text="n",

? ? ? ? ? ? ? ? ?size_max=50 # you need this otherwise the bubble are too small

? ? ? ? ? ? ? ? )


fig.update_layout(plot_bgcolor='rgb(10, 10, 10)',??

? ? ? ? ? ? ? ? ? paper_bgcolor='rgb(20, 55, 100)',??

? ? ? ? ? ? ? ? ? font={'size': 15,

? ? ? ? ? ? ? ? ? ? ? ? 'family': 'sans-serif',

? ? ? ? ? ? ? ? ? ? ? ? 'color': 'rgb(255, 255, 255)'

? ? ? ? ? ? ? ? ? ? ? ?},

? ? ? ? ? ? ? ? ? width=1000,

? ? ? ? ? ? ? ? ? height=500,

? ? ? ? ? ? ? ? ? xaxis=dict(title='Output of grapes per year in selected countries', ),??

? ? ? ? ? ? ? ? ? showlegend=False,

? ? ? ? ? ? ? ? ? margin=dict(l=100, r=100, t=100, b=100),

? ? ? ? ? ? ? ? ? hovermode = False,)

# Uncomment this if you don't wont country as yaxis title

# fig.layout.yaxis.title.text = None

fig.show()

http://img4.sycdn.imooc.com/64c1d2d30001855506450306.jpg

查看完整回答
反對(duì) 回復(fù) 2023-07-27
?
慕妹3242003

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

我應(yīng)該指出,如果您將原始數(shù)據(jù)附加為文本或可以更輕松地復(fù)制和粘貼的內(nèi)容,那么您的代碼將更具可重復(fù)性。但是,無(wú)論如何,我仍然可以回答您的問(wèn)題并為您指出正確的方向。


您應(yīng)該做的是使用循環(huán),并從查看行開(kāi)始data = [trace0, trace1, trace2]。正如您所注意到的,如果您有 100 個(gè)國(guó)家/地區(qū)而不是 3 個(gè)國(guó)家/地區(qū),此方法將無(wú)法擴(kuò)展。


相反,您可以data使用列表理解將其創(chuàng)建為列表,并更新每個(gè)跟蹤中發(fā)生更改的部分。trace0除了國(guó)家/地區(qū)、值和顏色之外, 、trace1、trace2沒(méi)有太大區(qū)別。為了向您展示我的意思,我使用 DataFrame 重新創(chuàng)建了您的數(shù)據(jù),然后創(chuàng)建了包含您的國(guó)家/地區(qū)和顏色的單獨(dú)列表。


# Version 2 could read data from .xlsx file.

import plotly as py

import plotly.graph_objs as go

import openpyxl


# wb = openpyxl.load_workbook(('grape output.xlsx'))     

# sheet = wb['Sheet1']       

# row_max = sheet.max_row

# col_max = sheet.max_column

# l=[]


# for row_n in range(row_max-1):

#     l.append([])

#     for col_n in range(col_max-1):

#         l[row_n].append(sheet.cell(row=row_n+2, column=col_n+2).value)


import pandas as pd


df = pd.DataFrame({1991:[10,100,50], 1992:[14,30,22], 1993:[16,70,30], 1994:[18,85,65], 1995:[20,30,70], 1996:[42,42,66], 1997:[64,64,60]})

df.index = ['US','JAPAN','CN']

colors = ['rgb(150,204,90)','rgb(255, 130, 71)','rgb(255, 193, 37)']


data = [go.Scatter(

    x=df.columns,

    y=[country]*len(df.columns),

    mode='markers+text',

    marker=dict(

        color=colors[num],

        size= df.loc[country],

        showscale = False,

        ),

    text=list(map(str, df.loc[country])),     

    textposition='middle center',   

    )

    for num, country in enumerate(df.index)

]


layout = go.Layout(plot_bgcolor='rgb(10, 10, 10)',  

                   paper_bgcolor='rgb(20, 55, 100)',  

                   font={               

                       'size': 15,

                       'family': 'sans-serif',

                       'color': 'rgb(255, 255, 255)'  

                   },

                   width=1000,

                   height=500,

                   xaxis=dict(title='Output of grapes per year in US, JAPAN and CN', ),  

                   showlegend=False,

                   margin=dict(l=100, r=100, t=100, b=100),

                   hovermode = False,       

                   )


# data = [trace0, trace1, trace2]

fig = go.Figure(data=data, layout=layout)

fig.show()


# py.offline.init_notebook_mode()

# py.offline.plot(fig, filename='basic-scatter.html')

http://img1.sycdn.imooc.com//64c1d2e50001c6c206460285.jpg

如果我隨后向 DataFrame 添加一個(gè)包含 1991-1997 年值的測(cè)試國(guó)家/地區(qū),則不需要更改其余代碼,氣泡圖將相應(yīng)更新。

# I added a test country with datadf = pd.DataFrame({1991:[10,100,50,10], 1992:[14,30,22,20], 1993:[16,70,30,30], 1994:[18,85,65,40], 1995:[20,30,70,50], 1996:[42,42,66,60], 1997:[64,64,60,70]})
df.index = ['US','JAPAN','CN','TEST']
colors = ['rgb(150,204,90)','rgb(255, 130, 71)','rgb(255, 193, 37)','rgb(100, 100, 100)']

http://img1.sycdn.imooc.com//64c1d2fd0001ee0706400277.jpg


查看完整回答
反對(duì) 回復(fù) 2023-07-27
?
慕田峪9158850

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

代碼已更新到版本 2,可以從 .xlsx 文件讀取數(shù)據(jù)并繪制氣泡圖。與之前的數(shù)據(jù)相比,名為“grape output.xlsx”的原始數(shù)據(jù)添加了新項(xiàng)目:


             1991  1992  1993  1994  1995  1996  1997  1998  1999

         US    10    14    16    18    20    42    64   100    50

      JAPAN   100    30    70    85    30    42    64    98    24

         CN    50    22    30    65    70    66    60    45    45

      INDIA    90    88    35    50    90    60    40    66    76

         UK    40    50    70    50    25    30    22    40    60

這是代碼:


# Version 2 

import plotly as py

import plotly.graph_objs as go

import openpyxl

import pandas as pd



wb = openpyxl.load_workbook('grape output.xlsx')

sheet = wb['Sheet1']

row_max = sheet.max_row

col_max = sheet.max_column

first_row_list = []

first_col_list = []

for col_n in range(2, col_max+1):

    first_row_list.append(sheet.cell(row=1, column=col_n).value)

for row_n in range(2,row_max+1):

    first_col_list.append(sheet.cell(row=row_n, column=1).value)


data_all = pd.read_excel('grape output.xlsx')

data = data_all.loc[:,first_row_list]


df = pd.DataFrame(data)

df.index = first_col_list

colors = ['rgb(150,204,90)','rgb(255, 130, 71)','rgb(255, 193, 37)','rgb(180,240,190)','rgb(255, 10, 1)',

          'rgb(25, 19, 3)','rgb(100, 100, 100)','rgb(45,24,200)','rgb(33, 58, 108)','rgb(35, 208, 232)']


data = [go.Scatter(

    x=df.columns,

    y=[country]*len(df.columns),

    mode='markers+text',

    marker=dict(

        color=colors[num],

        size= df.loc[country],

        showscale = False,

        ),

    text=list(map(str, df.loc[country])),

    textposition='middle center',

    )

    for num, country in enumerate(reversed(df.index))

]


layout = go.Layout(plot_bgcolor='rgb(10, 10, 10)',

                   paper_bgcolor='rgb(20, 55, 100)',

                   font={

                       'size': 15,

                       'family': 'sans-serif',

                       'color': 'rgb(255, 255, 255)'

                   },

                   width=1000,

                   height=800,

                   xaxis=dict(title='Output of grapes per year in US, JAPAN and CN'),

                   showlegend=False,

                   margin=dict(l=100, r=100, t=100, b=100),

                   hovermode = False,

                   )


fig = go.Figure(data=data, layout=layout)

py.offline.plot(fig, filename='basic-scatter.html')

現(xiàn)在結(jié)果是這樣的:

http://img1.sycdn.imooc.com//64c1d31400016b3e06100468.jpg

還有一些小問(wèn)題:

  1. 如何去掉 1990 和 2000 這兩個(gè)數(shù)字以及 1990 和 2000 的白色垂直線(xiàn)?

  2. 如何為1991、1993、1995、1997、1999畫(huà)白線(xiàn)并以橫坐標(biāo)軸顯示所有這些年份?

請(qǐng)更正代碼 Versinon 2 以改進(jìn)它。謝謝你!


查看完整回答
反對(duì) 回復(fù) 2023-07-27
  • 3 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專(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)