我想为Python中的绘图创建一个具有n种颜色的颜色图,它应该从一种颜色淡入另一种颜色。所有默认颜色图只有 10 个离散值,但我正在寻找具有 n > 10 个离散值的颜色图。
>>> px.colors.sequential.Plasma_r
['#f0f921',
'#fdca26',
'#fb9f3a',
'#ed7953',
'#d8576b',
'#bd3786',
'#9c179e',
'#7201a8',
'#46039f',
'#0d0887']
Run Code Online (Sandbox Code Playgroud)
有没有办法将连续的地图分成n部分?
这听起来像是一个非常广泛的问题,但是如果您让我描述一些细节,我可以向您保证这是非常具体的。以及令人沮丧,沮丧和愤怒。
下图描述了苏格兰选举,并基于plot.ly的代码:
情节1:
资料集1:
data = [['Source','Target','Value','Color','Node, Label','Link Color'],
[0,5,20,'#F27420','Remain+No – 28','rgba(253, 227, 212, 0.5)'],
[0,6,3,'#4994CE','Leave+No – 16','rgba(242, 116, 32, 1)'],
[0,7,5,'#FABC13','Remain+Yes – 21','rgba(253, 227, 212, 0.5)'],
[1,5,14,'#7FC241','Leave+Yes – 14','rgba(219, 233, 246, 0.5)'],
[1,6,1,'#D3D3D3','Didn’t vote in at least one referendum – 21','rgba(73, 148, 206, 1)'],
[1,7,1,'#8A5988','46 – No','rgba(219, 233, 246,0.5)'],
[2,5,3,'#449E9E','39 – Yes','rgba(250, 188, 19, 1)'],
[2,6,17,'#D3D3D3','14 – Don’t know / would not vote','rgba(250, 188, 19, 0.5)'],
[2,7,2,'','','rgba(250, 188, 19, 0.5)'],
[3,5,3,'','','rgba(127, 194, 65, 1)'],
[3,6,9,'','','rgba(127, …Run Code Online (Sandbox Code Playgroud) 我想创建一个带有几个水平线段的棒棒糖图,如下所示 - https://python-graph-gallery.com/184-lollipop-plot-with-2-group。我想使用plotly,因为我更喜欢图形(和简单的交互性),但找不到简洁的方法。
有两个折线图(https://plot.ly/python/line-charts/),您可以在布局中添加线条(https://plot.ly/python/shapes/#vertical-and-horizontal -lines- Positioned-relative-to-the-axes),但这两种解决方案都需要单独添加每个线段,每个线段大约有 4-8 行代码。虽然我可以只 for 循环这个,但如果有人可以向我指出任何具有内置矢量化的内容,例如 matplotlib 解决方案(第一个链接),我将不胜感激!
编辑:还尝试了以下代码,首先将绘图设为 matplotlib,然后转换为plotly。线段在此过程中消失。开始认为这是不可能的。
mpl_fig = plt.figure()
# make matplotlib plot - WITH HLINES
plt.rcParams['figure.figsize'] = [5,5]
ax = mpl_fig.add_subplot(111)
ax.hlines(y=my_range, xmin=ordered_df['value1'], xmax=ordered_df['value2'],
color='grey', alpha=0.4)
ax.scatter(ordered_df['value1'], my_range, color='skyblue', alpha=1,
label='value1')
ax.scatter(ordered_df['value2'], my_range, color='green', alpha=0.4 ,
label='value2')
ax.legend()
# convert to plotly
plotly_fig = tls.mpl_to_plotly(mpl_fig)
plotly_fig['layout']['xaxis1']['showgrid'] = True
plotly_fig['layout']['xaxis1']['autorange'] = True
plotly_fig['layout']['yaxis1']['showgrid'] = True
plotly_fig['layout']['yaxis1']['autorange'] = True
# plot: hlines disappear :/
iplot(plotly_fig)
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的每个跟踪绘制一个选定的标记。我想为标记和线条分配相同的颜色。有没有办法获得我的痕迹的颜色属性?
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[0, 1, 2, 3, 4, 5],
y=[0, 3, 5, 7, 9, 11],
name='trace01',
mode='lines+markers',
marker=dict(size=[0, 0, 30, 0, 0, 0],
color=[0, 0, 10, 0, 0, 0])
))
fig.add_trace(go.Scatter(
x=[0, 1, 2, 3, 4, 5],
y=[3, 5, 7, 9, 11, 13],
name='trace02',
mode='lines+markers',
marker=dict(size=[0, 0, 0, 30, 0, 0],
color=[0, 0, 0, 10, 0, 0])
))
fig.show()
Run Code Online (Sandbox Code Playgroud)
https://plotly.com/python/line-and-scatter/有许多散点图示例,但没有一个向您展示如何在 px.scatter 中设置所有点的颜色:
# x and y given as DataFrame columns
import plotly.express as px
df = px.data.iris() # iris is a pandas DataFrame
fig = px.scatter(df, x="sepal_width", y="sepal_length")
fig.show()
Run Code Online (Sandbox Code Playgroud)
我试过添加colour = 'red'等不起作用。这些示例仅向您展示如何通过其他变量着色。
原则上我可以添加另一个功能并将其设置为相同,但这似乎是完成任务的一种奇怪的方式......
我正在尝试在 python 中使用包含附加变量的自定义悬停模板从 pandas 数据帧plotly.express生成热图。例如:
import pandas as pd
import plotly.express as px
df = pd.DataFrame({'A': [10, 11, 12], 'B': [10, 12, 14], 'C': [12, 14, 16]},
index=['joe', 'tom', 'bob'])
fig = px.imshow(df)
fig.update_layout(xaxis={'title': 'Letters'}, yaxis={'title': 'Nicknames'})
fig.show()
Run Code Online (Sandbox Code Playgroud)
给了我这个:
我想要的是在悬停信息中添加或替换变量,例如将昵称替换为约瑟夫、托马斯和罗伯特。
这必须是可能的,但我不知道如何使用热图来做到这一点。有没有直接的方法可以做到这一点plotly.express?我应该使用“go”界面(如果是的话,如何)?
我注意到绘制不同的时间尺度会导致重叠条形图的不透明度褪色。我该如何纠正这个问题?在第一张图片中,我绘制了 2 年的时间范围,在第二张图片中,我绘制了 1 年的时间范围。请注意,前者有一个明显褪色的条形图,我希望这两个图表无论范围如何都是相同的。
旁注:我正在“破解”图表以主轴为中心,如果有人可以帮助我弄清楚如何直接设置辅助轴的 y 轴范围,这也会非常有帮助。
import plotly.graph_objects as go
from plotly.subplots import make_subplots
filtered = df[(df['date'] > '2017-1-24') & (df['date'] <= '2018-1-24')]
fig = make_subplots(specs=[[{"secondary_y": True}]])
fig.add_trace(
go.Bar(
x=filtered['date'],
y=filtered['divergence'],
opacity=0.5
)
)
fig.add_trace(
go.Scatter(
x=filtered['date'],
y=filtered['price'],
mode="lines"
),
secondary_y=True
)
fig.update_layout(yaxis_range=[-9, 9])
fig.show()
Run Code Online (Sandbox Code Playgroud)
我试图z在 Plotly 热图上将项目显示为文本。我使用的是最新版本 (5.5.0),并按照 Plotly 热图网页 ( https://plotly.com/python/heatmaps/ ) 上显示的确切示例进行操作,请参阅底部附近的“热图点上的文本”部分。
我的代码是他们的示例代码,即:
figHeatmap = go.Figure(
data=go.Heatmap(
z=[[1,20,30], [20,1,60], [30,60,1]],
text=[['1','2','3'],['4','5','6'],['7','8','9']],
texttemplate="%{text}",
textfont={"size":20}
)
)
Run Code Online (Sandbox Code Playgroud)
当我运行我的应用程序时,我没有收到任何错误,并且当我将鼠标悬停在热图上时,标签确实显示,但文本没有按应有的方式显示在热图上。由于我使用的是他们的确切示例,因此我不明白可能出了什么问题。有什么想法吗?
[编辑]:这似乎是达世币的问题。当我以交互方式运行该示例时,我确实得到了文本标签。但我的应用程序是 Dash 应用程序的一部分,这就是我看不到渲染标签的地方。
当我尝试绘制 Plotly 图表时,高度设置为接近 0 或其他值,因为图表呈现折叠状态。我所看到的:
但是,如果我手动设置图形的高度,它就会正确呈现。如何在不手动设置高度的情况下正确渲染图表?
重现折叠图的代码:
import plotly.io as pio
pio.renderers.default = "jupyterlab"
import plotly.express as px
import pandas as pd
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
fig.show()
Run Code Online (Sandbox Code Playgroud)
现在让图表显示:
fig.layout.height = 500
fig.show()
Run Code Online (Sandbox Code Playgroud)
我正在使用以下设置运行它:
plotly-python ×10
plotly ×8
python ×8
colors ×1
heatmap ×1
html ×1
jupyter-lab ×1
plotly-dash ×1
svg ×1