首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python绘图,有10行以上的独特颜色

Python绘图,有10行以上的独特颜色
EN

Stack Overflow用户
提问于 2020-06-01 16:19:10
回答 1查看 868关注 0票数 1

我试图用1550项目绘制线条图,颜色重复,使图形不可用。

在类似问题的答案中,我尝试了几种方法的答案,比如numpy,随机的。

然而,我无法找到一个简单的方法来做到这一点。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import os
import pandas as pd
import random
from datetime import datetime, timedelta
import matplotlib.dates as dates
import matplotlib.colors as colors
import numpy as np

df2=pd.read_csv("Portperfdetails.csv")
df3 = df2.drop(df2.index[0])
df3['DATETIME'] = pd.to_datetime(df3['DATETIME'])
portname=list(dict.fromkeys(df3['PORT_NAME']))
for i in range(len(portname)):
    X = []
    Y = []
    X = list(df3.loc[df3['PORT_NAME'] == '%s' % portname[i]]['DATETIME'])
    Y = list(df3.loc[df3['PORT_NAME'] == '%s' % portname[i]]['TOTAL_MBYTES'])
    ax = plt.axes()
    ax.xaxis.set_minor_locator(dates.HourLocator(interval=4))  # every 4 hours
    ax.xaxis.set_minor_formatter(dates.DateFormatter('%H:%M'))  # hours and minutes
    ax.xaxis.set_major_locator(dates.DayLocator(interval=1))  # every day
    ax.xaxis.set_major_formatter(dates.DateFormatter('\n%d-%m-%Y'))
    for i in range(len(Y)):
        Y[i] = int(Y[i])
    num_plots = 20
    plt.plot(X, Y)
    plt.ylabel('Port throughput')
    plt.xlabel('Time')
    plt.savefig('example.png')

图表

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-01 17:02:51

我将使用一个玩具示例,因为我无法访问您的数据(df3)。

我直接从Matplotlib画廊的命名颜色列表示例中改编了这篇文章。其思想是在绘制的每一行中迭代颜色名称,并使用颜色名称来指定每一行的颜色。

代码语言:javascript
运行
复制
from matplotlib import pyplot as plt
import matplotlib.colors as colors
fig, ax = plt.subplots()
lotsa_colors = colors.get_named_colors_mapping()
for cname,i in zip(lotsa_colors,range(50)):
    y = [n for n in range(i,i+10)]
    #print(cname,lotsa_colors[name])
    ax.plot(y,color=lotsa_colors[cname])

plt.show()
#plt.close()

看起来有1163个颜色名称和1105个独特的颜色

代码语言:javascript
运行
复制
len(set(lotsa_colors.values()))

如果你愿意,你可以随机选择颜色名称。

代码语言:javascript
运行
复制
import random
lotsa_colors = colors.get_named_colors_mapping()
lotsa_colors = list(lotsa_colors.keys())
random.shuffle(lotsa_colors)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62136409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档