【问题标题】:multicolored line with strings linecolllection带字符串 linecolllection 的五彩线
【发布时间】:2017-03-16 13:55:03
【问题描述】:

我正在使用 matplotlib 中的 linecollection 来创建类似于此示例的多色线:http://matplotlib.org/examples/pylab_examples/multicolored_line.html 但是我没有使用 x 和 y 两种浮点类型,而是想知道是否可以创建一条 x 轴为字符串的线让我们说: x=['a','b','c','d','e','f','g','h','j','k'] 。所以这些字符串中的每一个都有一个值,例如y=np.arange(10)。那么是否可以使用 linecollection 绘制一条连接这些 xy 点的彩色线?

【问题讨论】:

  • 当然可以画一条多色的线。由于 xticklabels 可以独立于数据进行设置,因此我看不到问题所在。你愿意分享你的代码,以便清楚这个问题是关于什么的吗?
  • 如果您有字符串,您可以随时将它们映射到数字,然后再映射到 set the axis labels accordinglyThis example is better
  • @berna1111 我已经做到了,感谢您的提示,将代码和结果添加到问题中
  • 您可以回答自己的问题并接受您的回答,将问题标记为answered。顺便说一句,有趣的图形 - 是每个发行商发布的游戏吗?
  • 是的,这是发行商发行的游戏数据集(计算一个平台一个标题,这就是为什么 EA 不是第一名的原因)。你可以在这里得到整套:kaggle.com/rush4ratio/video-game-sales-with-ratings/kernels

标签: python matplotlib data-visualization


【解决方案1】:

好的,我设法做到了,如果您需要,请使用下面的代码。数据(gbpndupl)即时绘图是简单的系列,其中索引列是发布者名称,另一列是数字。我还上传了它的样子。

from matplotlib.collections import LineCollection
plt.figure(figsize=(15, 5))
x=np.arange(40)
y=gbpndupl.iloc[:40]
points = np.array([x, y]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
lc = LineCollection(segments, cmap='plasma',norm=plt.Normalize(0, 10)) 
#norm can be changed to decide how fast color changes
lc.set_linewidth(3)
lc.set_array(x)
plt.xlim(min(x), max(x))
plt.ylim(min(y), max(y))
plt.gca().add_collection(lc)
labels=list(gbpndupl.iloc[:40].index)
plt.xticks(x, labels, rotation='vertical');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2013-08-06
    • 1970-01-01
    • 2013-04-03
    • 2016-03-26
    • 2018-02-11
    相关资源
    最近更新 更多