更改形状标记取决于 matplotlib 中的第三个字符串变量
Changing shape markers depend on a third string variable in matplotlib
我有一个名为 df_comunidades 的 pandas 数据框。在这里我们可以看到类似于 head():
的东西
df_comunidades.head()
Tormenta Comunidad TIEPI Gustmax
0 ANA ANDALUCIA 0.050 130.2
1 ANA ARAGON 0.250 90.5
2 BRUNO ANDALUCIA 0.012 114.0
3 BRUNO CATALUNYA 0.023 78.2
4 KARINE ARAGON 3.500 80.2
5 ANA BALEARES 2.000 97.2
每个“Comunidad”在我的散点图中都有不同的颜色,但此外,我希望每个“Tormenta”都有不同的形状标记。我尝试了很多方法......其中一种类似于我用于颜色的方法。我也尝试了一个循环 for i in range(len(markers)):
所有标记都保存在列表中 markers=['o','v','<','>','1','8','s','*','x','d']
我的稳定码是:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# initialize list of lists
data = [['ANA', 'ANDALUCIA', 0.05, 130.2], ['ANA', 'ARAGON', 0.25, 90.5], ['BRUNO', 'ANDALUCIA', 0.012, 114], ['BRUNO', 'CATALUNYA', 0.023, 78.2],['KARINE', 'ARAGON', 3.5, 80.2], ['ANA', 'BALEARES', 2, 97.2]]
# Create the pandas DataFrame
df_comunidades = pd.DataFrame(data, columns = ['Tormenta', 'Comunidad', 'TIEPI', 'Gustmax'])
#I define every color for every "Comunidad"
colors = {'ANDALUCIA' : 'g',
'CATALUNYA' : 'y',
'BALEARES' : 'r',
'ARAGON' : 'c'}
c = [colors[comunid] for comunid in df_comunidades['Comunidad']]
plt.scatter(df_comunidades['TIEPI'], df_comunidades['Gustmax'], alpha=0.5, c=c)
ax = plt.subplot(1, 1, 1)
#code to title the axes and the plot:
ax.set_xlim([0,3])
ax.set_xlabel("TIEPI")
ax.set_ylabel("Max Gusts in community")
plt.title("Relation between max gusts and TIEPI in autonomous communities")
plt.savefig('max_tiepi-gusts_comunid.png',dpi=300)
我明白了...看起来正方形高于其他部分...但散点图中的每个点都应该是“Tormenta”并且颜色表示“Comunidad”。
整个数据看起来是这样的:
在评论后编辑以便更清楚
我想你只是在感叹 scatter() 需要
颜色序列,
但只是一个 单个 标记。
所以我们需要遍历 N 个点。
(或者我们可以 .groupby() 如果我们只想对 T 次调用进行 T 次折磨。)
两者之间似乎存在差异
“最小阵风”标签和
“GustMAX”列。
有很多markers可供选择。
您可以尝试 'v'、's'、'p'
经历 3、4、5 面标记的进展。
我做了这些更改以生成随附的图表。
--- a/tmp/so_69076918_orig.py
+++ b/tmp/so_69076918.py
@@ -14,14 +14,22 @@ colors = {'ANDALUCIA' : 'g',
'CATALUNYA' : 'y',
'BALEARES' : 'r',
'ARAGON' : 'c'}
+markers = {'ANA': 'v',
+ 'BRUNO': 'x',
+ 'KARINE': 'd'}
c = [colors[comunid] for comunid in df_comunidades['Comunidad']]
-plt.scatter(df_comunidades['TIEPI'], df_comunidades['Gustmax'], alpha=0.5, c=c)
-
ax = plt.subplot(1, 1, 1)
#code to title the axes and the plot:
-ax.set_xlim([0,3])
+ax.set_xlim([-.1, 4])
ax.set_xlabel("TIEPI")
+ax.set_ylim([0, 140])
ax.set_ylabel("Min Gusts in community")
plt.title("Relation between min gusts and TIEPI in autonomous communities")
+
+for row in df_comunidades.itertuples():
+ plt.scatter([row.TIEPI], [row.Gustmax], alpha=0.5,
+ c=colors[row.Comunidad],
+ marker=markers[row.Tormenta])
+
plt.savefig('min_tiepi-gusts_comunid.png',dpi=300)
我有一个名为 df_comunidades 的 pandas 数据框。在这里我们可以看到类似于 head():
的东西df_comunidades.head()
Tormenta Comunidad TIEPI Gustmax
0 ANA ANDALUCIA 0.050 130.2
1 ANA ARAGON 0.250 90.5
2 BRUNO ANDALUCIA 0.012 114.0
3 BRUNO CATALUNYA 0.023 78.2
4 KARINE ARAGON 3.500 80.2
5 ANA BALEARES 2.000 97.2
每个“Comunidad”在我的散点图中都有不同的颜色,但此外,我希望每个“Tormenta”都有不同的形状标记。我尝试了很多方法......其中一种类似于我用于颜色的方法。我也尝试了一个循环 for i in range(len(markers)):
所有标记都保存在列表中 markers=['o','v','<','>','1','8','s','*','x','d']
我的稳定码是:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# initialize list of lists
data = [['ANA', 'ANDALUCIA', 0.05, 130.2], ['ANA', 'ARAGON', 0.25, 90.5], ['BRUNO', 'ANDALUCIA', 0.012, 114], ['BRUNO', 'CATALUNYA', 0.023, 78.2],['KARINE', 'ARAGON', 3.5, 80.2], ['ANA', 'BALEARES', 2, 97.2]]
# Create the pandas DataFrame
df_comunidades = pd.DataFrame(data, columns = ['Tormenta', 'Comunidad', 'TIEPI', 'Gustmax'])
#I define every color for every "Comunidad"
colors = {'ANDALUCIA' : 'g',
'CATALUNYA' : 'y',
'BALEARES' : 'r',
'ARAGON' : 'c'}
c = [colors[comunid] for comunid in df_comunidades['Comunidad']]
plt.scatter(df_comunidades['TIEPI'], df_comunidades['Gustmax'], alpha=0.5, c=c)
ax = plt.subplot(1, 1, 1)
#code to title the axes and the plot:
ax.set_xlim([0,3])
ax.set_xlabel("TIEPI")
ax.set_ylabel("Max Gusts in community")
plt.title("Relation between max gusts and TIEPI in autonomous communities")
plt.savefig('max_tiepi-gusts_comunid.png',dpi=300)
我明白了...看起来正方形高于其他部分...但散点图中的每个点都应该是“Tormenta”并且颜色表示“Comunidad”。
整个数据看起来是这样的:
在评论后编辑以便更清楚
两者之间似乎存在差异 “最小阵风”标签和 “GustMAX”列。
有很多markers可供选择。 您可以尝试 'v'、's'、'p' 经历 3、4、5 面标记的进展。
我做了这些更改以生成随附的图表。
--- a/tmp/so_69076918_orig.py
+++ b/tmp/so_69076918.py
@@ -14,14 +14,22 @@ colors = {'ANDALUCIA' : 'g',
'CATALUNYA' : 'y',
'BALEARES' : 'r',
'ARAGON' : 'c'}
+markers = {'ANA': 'v',
+ 'BRUNO': 'x',
+ 'KARINE': 'd'}
c = [colors[comunid] for comunid in df_comunidades['Comunidad']]
-plt.scatter(df_comunidades['TIEPI'], df_comunidades['Gustmax'], alpha=0.5, c=c)
-
ax = plt.subplot(1, 1, 1)
#code to title the axes and the plot:
-ax.set_xlim([0,3])
+ax.set_xlim([-.1, 4])
ax.set_xlabel("TIEPI")
+ax.set_ylim([0, 140])
ax.set_ylabel("Min Gusts in community")
plt.title("Relation between min gusts and TIEPI in autonomous communities")
+
+for row in df_comunidades.itertuples():
+ plt.scatter([row.TIEPI], [row.Gustmax], alpha=0.5,
+ c=colors[row.Comunidad],
+ marker=markers[row.Tormenta])
+
plt.savefig('min_tiepi-gusts_comunid.png',dpi=300)