vii*_*vii 5 python format matplotlib pandas plotly
我想从 pandas 数据帧创建一个图表,其中轴刻度应该是百分比。
使用 matplotlib 有一个很好的轴格式化程序,它可以根据给定的最大值自动计算百分比刻度:
例子:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame( { 'images': np.arange(0, 355, 5) } ) # 70 items in total, max is 350
ax = df.plot()
ax.yaxis.set_major_formatter(pltticker.PercentFormatter(xmax=350))
loc = pltticker.MultipleLocator(base=50) # locator puts ticks at regular intervals
ax.yaxis.set_major_locator(loc)
Run Code Online (Sandbox Code Playgroud)
由于 matplotlib 的使用相当繁琐,所以我想对 Plotly 做同样的事情。我只找到了将刻度标签格式化为百分比的选项 - 但没有为我计算刻度和百分比的“自动格式化程序”。有没有办法使用自动百分比刻度或者我必须每次都手动计算它们(呃)?
import plotly.express as px
import pandas as pd
fig = px.line(df, x=df.index, y=df.images, labels={'index':'num of users', '0':'num of img'})
fig.layout.yaxis.tickformat = ',.0%' # does not help
fig.show()
Run Code Online (Sandbox Code Playgroud)
感谢您的任何提示。
我不确定是否有百分比的轴选项,但通过将 y 除以它的最大值,相对容易到达那里y = df.y/df.y.max()。这些类型的计算在绘图调用中执行,非常方便,我一直在使用它们。
注意:如果你有可能出现负值,它确实会变得更加复杂(而且丑陋)。类似的东西y=(df.y-df.y.min())/(df.y.max()-df.y.min())可能是必要的并且是更通用的解决方案。
完整示例:
import plotly.express as px
import pandas as pd
data = {'x': [0, 1, 2, 3, 4], 'y': [0, 1, 4, 9, 16]}
df = pd.DataFrame.from_dict(data)
fig = px.line(df, x=df.x, y=df.y/df.y.max())
#or# fig = px.line(df, x=df.x, y=(df.y-df.y.min())/(df.y.max()-df.y.min()))
fig.layout.yaxis.tickformat = ',.0%'
fig.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5801 次 |
| 最近记录: |