当前位置: 首页 > 知识库问答 >
问题:

x、 x格式科学样式y记号matplotlib

墨高杰
2023-03-14

我正在使用matplotlib创建一些绘图。

对于图,我使用的是SCLIMITS=(0,0)

代码如下:

for key in urbs_values.keys():
    # y-Axis (values)
    u[key] = np.array(urbs_values[key])
    o[key] = np.array(oemof_values[key])

    # draw plots
    plt.plot(i, u[key], label='urbs_'+str(key), linestyle='None', marker='x')
    plt.ticklabel_format(axis='y', style='sci', scilimits=(0, 0))
    plt.plot(i, o[key], label='oemof_'+str(key), linestyle='None', marker='.')
    plt.ticklabel_format(axis='y', style='sci', scilimits=(0, 0))

这通常是一致的,但有时我在y轴上以x. x的格式获取值,有时我获取x.xx,我并不觉得它很优雅。

有没有办法通过动态缩放科学符号,强制matplotlib始终以类似于x.x的格式为我提供y值?

这是一个我不喜欢的示例情节:

共有1个答案

何骞尧
2023-03-14

您可以根据数据中的最大值动态设置限制:

def grabMaxExponent(values, precision=1):
    """Given a list of numericals, returns the exponent of the max
    value in scientific notation, adjusted to have no sig figs in
    decimal places.

    e.g. 190 > 1.9E+02 > 19E+01
    returns exponent (1)"""

    # Grab max value and convert to scientific notation
    value = format(max(values), f"5.{precision}E")

    # Pull exponent
    a,m = value.split('E+')
    a,b = a.split('.')
    a,b,m = map(int, (a,b,m))

    # If significant figures non-zero, increase exponent to bring them before decimal point
    if b > 0:
        m-=precision

    return m

m = grabMaxExponent(y)

# Set scilimits to m
plt.ticklabel_format(axis='y', style='sci', scilimits=(m,m))

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.ticklabel_format.html

 类似资料:
  • 这个问题与Java表达式中子表达式的求值顺序不同,因为在这里肯定不是“子表达式”。需要加载它进行比较,而不是“求值”。这个问题是特定于Java的,表达式来自一个真实的项目,而不是通常为棘手的面试问题而设计的牵强附会的不切实际的构造。它应该是比较和替换习语的一行替换 它比x86 CMPXCHG指令还要简单,因此在Java中应该使用更短的表达式。

  • 问题内容: 考虑以下示例: 我不确定Java语言规范中是否有一项规定要加载变量的先前值以便与右侧()进行比较,该变量应按照方括号内的顺序进行计算。 为什么第一个表达式求值,而第二个表达式求值?我本来希望先被评估,然后再与自身()比较并返回。 这个问题与Java表达式中子表达式的求值顺序不同,因为这里绝对不是“子表达式”。需要 加载 它以进行比较,而不是对其进行“评估”。这个问题是特定于Java的,

  • X|Y

    描述 (Description) 逻辑运算符[X|Y]匹配X或Y. 例子 (Example) 以下示例显示了逻辑运算符的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class LogicalOperatorDemo { private sta

  • 问题内容: 几年前我有这个面试问题,但是我还没有找到答案。 做无限循环的x和y应该是什么? 我们试着用,, VS 。 问题答案: 您需要两个可比较,具有相同值但代表不同实例的变量,例如: 和都为true,因为取消了装箱,但是实例相等性为false。 请注意,它也可以与一起使用,并且任何值(不仅是0)都可以使用。 您还可以使用JVM的复杂性-它们通常仅缓存最多127个整数,因此也可以使用: (但是1

  • 问题内容: 我已经编写了自己的聚类例程,并希望生成树状图。最简单的方法是使用scipy树状图功能。但是,这需要输入与scipy链接功能产生的格式相同。我找不到如何格式化其输出的示例。我在想是否有人可以启发我。 问题答案: 这来自scipy.cluster.hierarchy.linkage()函数文档,我认为这是对输出格式的清晰描述: 返回一个( n -1)4矩阵Z。在第 i 次迭代中,将索引为Z

  • Returns an SVG markup string for the blur filter Parameters xnumberamount of horizontal blur, in pixels ynumberamount of vertical blur, in pixels Returns: string filter representation Usage var f = pa