英文:
How to make a section of the axis log scale and other section to be linear scale to better present the data
问题
我想表示我的数据,其中数值从0.00001到1,我希望在对数刻度上绘制从0.00001到0.1的数据,然后在线性刻度上绘制从0.1到0.95的数据,然后再次在对数刻度上绘制从0.95到1的数据。大部分变化发生在极端值之间,而0.1到0.9之间的数据几乎保持稳定,但我仍然需要查看它与其他数据的关系。
x轴应该像下面显示的那样。
英文:
I would like to represent my data where values go from 0.00001 to 1 where I am interested in plotting data from 0.00001 to 0.1 in a log scale and from 0.1 to 0.95 in linear scale and then again 0.95 to 1 in log scale. Most of the variations happen in the extreme and the data between 0.1 to 0.9 is almost stable but i need to take a look at it though with the rest of the data.
The x axis should be like the one shown below.
答案1
得分: 1
这可以通过将图分成三个部分并分配给各自的x轴来实现。这些x轴可以通过指定域(相对空间覆盖范围)放置在一起。
这是Python中的示例,但Plotly在R中应该具有相同的功能。
import plotly.graph_objects as go
x1 = [0.001, 0.01, 0.1]
x2 = [10, 100, 1000]
x3 = [1000, 10000, 100000]
y1 = [1, 2, 3]
y2 = [4, 5, 6]
y3 = [7, 8, 9]
fig = go.Figure()
fig.add_trace(go.Scatter(x=x1, y=y1, xaxis='x1'))
fig.add_trace(go.Scatter(x=x2, y=y2, xaxis='x2'))
fig.add_trace(go.Scatter(x=x3, y=y3, xaxis='x3'))
fig.update_layout(
xaxis1=dict(
range=[-3, 0],
side='bottom',
overlaying='x',
domain=[0, 0.35],
type='log'
),
xaxis2=dict(
range=[1, 1000],
side='bottom',
overlaying='x',
domain=[0.35, 0.65],
),
xaxis3=dict(
range=[3, 6],
side='bottom',
overlaying='x',
domain=[0.65, 1],
type='log'
),
)
英文:
This is possible by splitting the graphing in three parts and assigning each to its own x-axis. These x-axes can be placed next to each other by specifying the domain (relative coverage of space).
This is in Python, but Plotly should have the same functionality in R.
import plotly.graph_objects as go
x1 = [0.001,0.01,0.1]
x2 = [10,100,1000]
x3 = [1000,10000,100000]
y1 = [1,2,3]
y2 = [4,5,6]
y3 = [7,8,9]
fig = go.Figure()
fig.add_trace(go.Scatter(x=x1, y=y1, xaxis='x1'))
fig.add_trace(go.Scatter(x=x2, y=y2, xaxis='x2'))
fig.add_trace(go.Scatter(x=x3, y=y3, xaxis='x3'))
fig.update_layout(
xaxis1=dict(
range=[-3,0],
side='bottom',
overlaying='x',
domain=[0,0.35],
type='log'
),
xaxis2=dict(
range=[1,1000],
side='bottom',
overlaying='x',
domain=[.35,.65],
),
xaxis3=dict(
range=[3,6],
side='bottom',
overlaying='x',
domain=[.65,1],
type='log'
),
)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论