如何解决根据pandas.DataFrame中的值更改seaborn.catplot标记颜色的亮度
我尝试根据sns.catplot
创建一个pd.DataFrame
图表,其中包含多个基数(A,C,G,T,U 1 和U 2 )。
我的目的是仅绘制标记,这些标记取决于df ['environment']
的值,因此没有线,框或其他任何内容。我还使用cycler.cycler (color = colourlist)
尝试了几种方法,但是“情节不想选择”超过三种颜色。
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
import pandas as pd
import numpy as np
import cycler
import os
sns.set (style = 'white',color_codes = True,palette = ["#FF0000","#0000FF","#00FF00","#C03030","#3030C0","#30C030"])
colourlist = np.array ([ [0,0] ])
for v in [0,45] :
for s in [0,45] :
for h in [0,120,240] :
try :
H,S,V = h / 360.,(100 - s) / 100.,(100 - v) / 100.
colourlist = np.append (colourlist,[ [H,V] ],axis = 0)
except :
pass
colourlist = np.delete (colourlist,0)
matplotlib.rcParams ['axes.prop_cycle'] = cycler.cycler (color = colourlist)
matplotlib.rcParams ['image.cmap'] = 'hsv'
matplotlib.rcParams ['savefig.transparent'] = True
matplotlib.rcParams ['savefig.format'] = 'eps'
matplotlib.rcParams ['axes.xmargin'] = 0
matplotlib.rcParams ['axes.ymargin'] = 0
matplotlib.rcParams ['figure.frameon'] = False
matplotlib.spines.rcParams ['axes.spines.right'] = False
matplotlib.spines.rcParams ['axes.spines.top'] = False
matplotlib.rcParams ['xtick.bottom'] = True
matplotlib.rcParams ['ytick.left'] = True
file = os.path.join (os.environ ['HOME'],'Data.csv')
with open (file,'r') as f :
df = pd.read_csv (f,index_col = 0,header = 0,thousands = None,decimal = '.')
df ['base'] = df ['base'].str.upper ()
#df ['method'] = df ['method'].str.upper ()
df = df.sort_values (['charge','base','environment'])
sns.catplot (jitter = False,data = df,x = 'base',y = 'energy',hue = 'charge',palette = ["#000FFF","#FF0000","#00FFFF","#FF00FF","#FFFF00"],order = ['A','C','U1','','G','T','U2'])
〜/ Data.csv :
,environment,base,charge,energy,method
0,pbs,A,neg,0.34835,1
1,C,0.40194,2
2,G,0.34959,1
3,T,0.40738,2
4,U1,0.34904,2
5,U2,0.40016,2
6,neu,0.40151,3
7,0.34494,3
8,0.40193,3
9,0.34458,3
10,0.34646,3
11,0.40871,3
12,pos,0.34047,2
13,0.40157,2
14,0.34232,2
15,0.40854,2
16,0.34611,2
17,0.34414,2
18,polymeric,0.28333,2
19,0.46908,3
20,0.33224,3
21,0.35825,1
22,0.33033,3
23,0.39167,3
24,0.36964,2
25,0.33979,2
26,0.41815,3
27,0.30786,2
28,0.40727,1
29,0.36719,3
30,0.38173,1
31,0.35060,3
32,0.37617,1
33,0.44172,2
34,0.31267,3
35,0.34478,2
我想到了类似的东西
sns.scatterplot (data = df,x_order = ['A','U2'],brightness = np.where (df ['environment'] == 'pbs',1.,.5) ).
我还能用pandas.DataFrame
来绘制(数据; matplotlib
)吗?代码看起来如何?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。