用Python更好地表示barh

用Python更好地表示barh,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我有一个Counter()元素,我想将其表示为某种图形 每个元素都是一个字符串-值对,字符串可能很长,因此我选择了易读性来使用barh图形。我怎样才能写得更好?我可以做一些类似于垂直虚线的事情,自动定位在每个条的末端吗?如何将图例添加到两个轴?我只能改变颜色。更好地表示图表的建议被广泛接受 plt.figure(figsize=(10, 10)) plt.barh(list(count_single_obf.keys()), list(count_single_obf.values()), co

我有一个
Counter()
元素,我想将其表示为某种图形

每个元素都是一个字符串-值对,字符串可能很长,因此我选择了易读性来使用
barh
图形。我怎样才能写得更好?我可以做一些类似于垂直虚线的事情,自动定位在每个条的末端吗?如何将图例添加到两个轴?我只能改变颜色。更好地表示图表的建议被广泛接受

plt.figure(figsize=(10, 10))
plt.barh(list(count_single_obf.keys()), list(count_single_obf.values()), color = "lightgreen")
count\u single\u obf
printed返回以下内容:

Counter({'EncodeArithmetic': 49,
         'EncodeLiterals': 98,
         'Flatten': 71,
         'InitEntropy': 29,
         'InitImplicitFlow': 3,
         'InitOpaque': 100,
         'RandomFuns': 82,
         'Split': 99,
         'base': 7})
此外,在打印图形之前,它会打印以下行:
;为什么?如何避免呢?我用的是Jupyter笔记本


根据您的数据进行调整。我认为当你指的是图例时,你指的是x和y标签。我选择了垂直表示,这样就可以画一条水平线。此处的水平线显示类别的平均值作为阈值

下面是代码片段:

import matplotlib.pyplot as plt
import numpy as np
example_dict = {'EncodeArithmetic': 49,
         'EncodeLiterals': 98,
         'Flatten': 71,
         'InitEntropy': 29,
         'InitImplicitFlow': 3,
         'InitOpaque': 100,
         'RandomFuns': 82,
         'Split': 99,
         'base': 7}


plt.figure(figsize=(8,6))
plt.bar(list(example_dict.keys()), list(example_dict.values()), color="lightgreen")
plt.axhline(np.asarray(list(example_dict.values())).mean(), color="gray") # Horizontal line adding the threshold
plt.xlabel("Category") # x label
plt.ylabel("Frequency") # y label
plt.show()
输出:

为避免打印出笔记本中最后一条语句的结果,请在行尾添加分号(
)。这将创建一个没有输出的空语句。