如何创建Python iplot图形,颜色随值变化?

如何创建Python iplot图形,颜色随值变化?,python,plot,plotly,Python,Plot,Plotly,这是我的部分数据 我数我的数据 count_interests = interests.count() 然后做了一个图表 count_interests.iplot(kind = 'bar', xTitle='Interests', yTitle='Number of Person', colors='Red') 我曾多次尝试寻找一个函数,该函数使用值更改columns color,以使较大和较小的列显示不同的颜色 我知道有colorscale和color函数,我试了很多次都找不到。有人

这是我的部分数据

我数我的数据

count_interests = interests.count()
然后做了一个图表

count_interests.iplot(kind = 'bar', xTitle='Interests', yTitle='Number of Person', colors='Red')

我曾多次尝试寻找一个函数,该函数使用值更改columns color,以使较大和较小的列显示不同的颜色


我知道有
colorscale
color
函数,我试了很多次都找不到。有人知道任何函数吗?

您可以定义一个函数,该函数为每个值返回一个颜色,然后在
列表中传递每个条的颜色

import pandas as pd
import plotly

def color(val, median, std):
    if val > median + std:
            return 'darkgreen'
    if val < median - std:
            return 'darkred'
    return 'orange'

df = pd.DataFrame({'cinema': [1, 2, 5, 3, 3, None],
                   'theatre': [3, 0, 8, 4, 0, 4],
                   'wine': [3, 2, 5, None, 1, None],
                   'beer': [4, 8, 2, None, None, None]})

med = df.count().median()
std = df.count().std()

colors = [color(i, med, std) for i in df.count()]

fig = plotly.graph_objs.Bar(x=df.columns,
                            y=df.count(),
                            marker=dict(color=colors))

plotly.offline.plot([fig])
将熊猫作为pd导入
绘声绘色地导入
def颜色(val、中值、标准):
如果val>中值+标准:
返回“暗绿色”
如果val<中值-标准:
返回'darkred'
返回“橙色”
df=pd.DataFrame({'cinema':[1,2,5,3,3,无],
《剧院》:[3,0,8,4,0,4],
“葡萄酒”:[3,2,5,无,1,无],
“啤酒”:[4,8,2,无,无,无])
med=df.count().median()
std=df.count().std()
colors=[df.count()中i的颜色(i、med、std)]
fig=绘图仪对象条(x=df.columns,
y=df.count(),
标记=记录(颜色=颜色))
plotly.offline.plot([图])

您可以定义一个函数,该函数返回每个值的颜色,然后在
列表中传递每个条的颜色

import pandas as pd
import plotly

def color(val, median, std):
    if val > median + std:
            return 'darkgreen'
    if val < median - std:
            return 'darkred'
    return 'orange'

df = pd.DataFrame({'cinema': [1, 2, 5, 3, 3, None],
                   'theatre': [3, 0, 8, 4, 0, 4],
                   'wine': [3, 2, 5, None, 1, None],
                   'beer': [4, 8, 2, None, None, None]})

med = df.count().median()
std = df.count().std()

colors = [color(i, med, std) for i in df.count()]

fig = plotly.graph_objs.Bar(x=df.columns,
                            y=df.count(),
                            marker=dict(color=colors))

plotly.offline.plot([fig])
将熊猫作为pd导入
绘声绘色地导入
def颜色(val、中值、标准):
如果val>中值+标准:
返回“暗绿色”
如果val<中值-标准:
返回'darkred'
返回“橙色”
df=pd.DataFrame({'cinema':[1,2,5,3,3,无],
《剧院》:[3,0,8,4,0,4],
“葡萄酒”:[3,2,5,无,1,无],
“啤酒”:[4,8,2,无,无,无])
med=df.count().median()
std=df.count().std()
colors=[df.count()中i的颜色(i、med、std)]
fig=绘图仪对象条(x=df.columns,
y=df.count(),
标记=记录(颜色=颜色))
plotly.offline.plot([图])

也可以通过
pd.pivot\u table()
从行到列,或通过为条创建单独的跟踪列表,对条进行着色。这里,以
sum()
为例对每一列进行聚合。代码如下:

# Import libraries
import datetime
from datetime import date
import pandas as pd
import numpy as np
from plotly import __version__
%matplotlib inline

import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot 
init_notebook_mode(connected=True)

init_notebook_mode(connected=True)
cf.go_offline()

import plotly.graph_objs as go
import plotly.offline as pyo


# Create dataframe
INT_M_PUB = [0,0,0,0,0,1,0,0,0,0]
INT_M_CINEMA = [1,1,1,0,0,0,0,0,0,1]
INT_M_THEATRE = [1,0,1,0,0,1,0,1,0,1]
INT_M_GYM = [0,0,0,0,0,1,0,0,0,1]
INT_M_ENTERTAIN = [0,0,1,1,0,1,0,1,0,1]
INT_M_EATOUT = [0,1,1,0,0,1,0,0,1,1]
INT_M_WINE = [0,0,0,0,0,1,0,0,0,1]


interests = pd.DataFrame({'INT_M_PUB':INT_M_PUB, 'INT_M_CINEMA':INT_M_CINEMA, 'INT_M_THEATRE':INT_M_THEATRE,
                   'INT_M_GYM':INT_M_GYM, 'INT_M_ENTERTAIN':INT_M_ENTERTAIN, 'INT_M_EATOUT':INT_M_EATOUT,
                   'INT_M_WINE':INT_M_WINE
                  })
interests.head(2)


dfm = interests.sum().reset_index().rename(columns={'index':'interests', 0:'value'})
dfm

# Re-creating the plot similar to that in question (note: y-axis scales are different)
df = dfm.copy()
col_list = df.columns

df.iplot(kind = 'bar', x='interests', y='value', xTitle='Interests', yTitle='Number of Person', title='These bars need to be colored', color='red')


也可以通过
pd.pivot\u table()
从行到列,或通过为条创建单独的跟踪列表,对条进行着色。这里,以
sum()
为例对每一列进行聚合。代码如下:

# Import libraries
import datetime
from datetime import date
import pandas as pd
import numpy as np
from plotly import __version__
%matplotlib inline

import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot 
init_notebook_mode(connected=True)

init_notebook_mode(connected=True)
cf.go_offline()

import plotly.graph_objs as go
import plotly.offline as pyo


# Create dataframe
INT_M_PUB = [0,0,0,0,0,1,0,0,0,0]
INT_M_CINEMA = [1,1,1,0,0,0,0,0,0,1]
INT_M_THEATRE = [1,0,1,0,0,1,0,1,0,1]
INT_M_GYM = [0,0,0,0,0,1,0,0,0,1]
INT_M_ENTERTAIN = [0,0,1,1,0,1,0,1,0,1]
INT_M_EATOUT = [0,1,1,0,0,1,0,0,1,1]
INT_M_WINE = [0,0,0,0,0,1,0,0,0,1]


interests = pd.DataFrame({'INT_M_PUB':INT_M_PUB, 'INT_M_CINEMA':INT_M_CINEMA, 'INT_M_THEATRE':INT_M_THEATRE,
                   'INT_M_GYM':INT_M_GYM, 'INT_M_ENTERTAIN':INT_M_ENTERTAIN, 'INT_M_EATOUT':INT_M_EATOUT,
                   'INT_M_WINE':INT_M_WINE
                  })
interests.head(2)


dfm = interests.sum().reset_index().rename(columns={'index':'interests', 0:'value'})
dfm

# Re-creating the plot similar to that in question (note: y-axis scales are different)
df = dfm.copy()
col_list = df.columns

df.iplot(kind = 'bar', x='interests', y='value', xTitle='Interests', yTitle='Number of Person', title='These bars need to be colored', color='red')